我什么时候应该使用LongRunning Task Creation选项?

时间:2012-11-29 18:14:58

标签: c# .net azure task-parallel-library

我有一个Azure辅助角色,它有三种类型的过程:

  • 从数据库读取并写入 worker-input-queue 的C#线程(Task1)
  • worker-input-queue 读取的Java线程确实有效并写入 worker-output-queue
  • worker-output-queue 读取并写入数据库(Task2)的C#线程

Task1和Task2无限期运行,如果各自的队列为空,则会休眠。

我的代码如下所示:

SpawnJavaProcesses();  
Task.Factory.StartNew(Task1);  
Task.Factory.StartNew(Task2);  
while(true)  
{  
    //do some trivial sporadic work  
    Thread.Sleep(60*1000);  
}  

我的问题:

  • 启动Task1和Task2时,我应该使用LongRunning任务创建选项吗?
  • 有没有更好的方法来实现我在这里尝试做的事情?

1 个答案:

答案 0 :(得分:6)

如果你有一些长时间运行的线程,最好使用LongRunning选项。通过选择此选项,您将在线程池外部的线程中运行。这也是explained by Stephen Toub(来自Parallel Extensions团队):

  

这本身并不是特定的长度。如果你产生了很多   任务,LongRunning不适合他们。如果你正在产生   一两个任务将持续相当长的一段时间   你的应用程序的生命周期,然后LongRunning是一些东西   考虑