c# - 我什么时候应该使用 LongRunning 任务创建选项?

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

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

  • 从数据库读取数据并写入worker-input-queue(任务1)的 C# 线程
  • worker-input-queue读取数据的Java线程确实工作并写入worker-output-queue
  • worker-output-queue读取数据并写入数据库(任务2)的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 任务创建选项?
  • 有更好的方法来实现我在这里尝试做的事情吗?

最佳答案

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

It's not a specific length per se. If you're generating a lot of tasks, LongRunning is not appropriate for them. If you're generating one or two tasks that will persist for quite some time relative to the lifetime of your application, then LongRunning is something to consider.

关于c# - 我什么时候应该使用 LongRunning 任务创建选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632080/

相关文章:

c# - 嵌套循环中的循环优化 c#

c# - 响应由 JavaScript 完成的 TextBox 更改

python-2.7 - 如何使用 python 和 REST API 调用将动态 VHD 上传到 Azure?

具有应用程序服务的 Azure 应用程序网关 - 使用应用程序服务的 https 监听器

node.js - Azure msal ClientAuthError 帮助@azure/msal-node

c# - 使用 linq 从正则表达式匹配中获取组名

C# split 函数不起作用

C# 使用默认搜索查询启动默认浏览器

c# - 传递凭据适用于 WebRequest,但不适用于 HttpClient

C# 延迟写入 XML