我需要以不同的优先级异步调用几个方法。
我的第一个想法是使用线程池并更改线程的优先级,如下所示:
static void Run()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(SomeMethod));
}
static void SomeMethod(object o)
{
Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; // is this ok?
// do some work here
}
这有效吗?或者你有什么建议?
根据http://msdn.microsoft.com/en-us/library/0ka9477y.aspx,如果你的目标是 2.0,它就不起作用,它暗示 3.5 存在一些差异,但没有具体提及优先级:
何时不使用线程池线程
有几种场景适合创建和管理自己的线程而不是使用线程池线程:
-
您需要一个前台线程。
-
您需要一个线程具有特定的优先级。
-
您的任务会导致线程长时间阻塞。线程池具有最大线程数,因此大量阻塞的线程池线程可能会阻止任务启动。
-
您需要将线程放入单线程单元中。所有ThreadPool线程都在多线程单元中。
-
您需要有一个与线程相关联的稳定身份,或者将线程专用于某项任务。
您可能需要提出自己的实现,并直接处理线程的创建。
问题:您想要实现什么目标?您有一组任务需要处理,并且您希望首先执行高优先级任务,稍后执行较低优先级的任务;或者你真的想要不同优先级的线程吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)