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

Gil*_*Gat 6 .net c# azure task-parallel-library

我有一个Azure Worker角色,它有三种类型的进程:

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

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

我的代码看起来像这样:

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

我的问题:

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

San*_*tia 6

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

这本身并不是特定的长度.如果您生成了很多任务,LongRunning就不适合他们.如果您生成的一个或两个任务相对于应用程序的生命周期将持续相当长的一段时间,那么LongRunning是需要考虑的事情.