对于C# 4.0 windows应用程序中的长运行任务(异步任务)。
这些选择是:
对于长期运行的任务(在整个应用程序生存期内),建议使用上述两种方法。还有其他选择吗?另外,
1. if no need for UI update,priority and for Thread (which is created only on application/process start)?
2. if number of tasks increased? (Care of ThreadPool Starvation)
还有其他有趣的事吗?
发布于 2012-11-07 07:39:10
对于C# 4.0 windows应用程序中的长运行任务(异步任务)。
您可能会在LongRunning选项中使用一个任务(TPL)。TPL也运行在ThreadPool之上,但是这个选项可以使它保留一个线程。
如果任务数量增加?(照顾ThreadPool饥饿)
ThreadPool将尝试动态地适应,您可以选择帮助它。
发布于 2012-11-07 07:45:54
BackgroundWorker也使用线程,但只是抽象了一些线程创建和监视细节。
因此,通过使用BackgroundWorker,您可以避免;-必须处理细节-创建新线程的高成本(+性能)
只有当您需要在其他异步任务结束之前运行另一个异步任务时,ThreadPool饥饿才会发生。您在这里所能做的不多,因为CPU已经满负荷运行。
我不会直接用Thread的。如果您对所提供的ThreadPool不满意,也许您可以尝试自己实现一个(最好不要这样做,只是开玩笑)。
https://stackoverflow.com/questions/13265053
复制相似问题