使用 Task.Factory.StartNew 作为任务队列
Using Task.Factory.StartNew for tasks queue
我想在我的 C# 应用程序中使用任务队列处理后台内容。
通过阅读网上资料,我了解到调用 Task.Factory.StartNew
会将任务排入 TaskScheduler
队列。
当我这样做时,我收到编译器警告,因为我没有等待 Task.Factory.StartNew
.
的结果
但在我的例子中,调用代码对任务的结果不感兴趣。我有处理任务失败的代码,但这不是调用代码的责任。
我想知道我的方法是否正确,或者是否有更合适的 'C# way' 执行任务队列。
I want to use a task queue for background stuff in my C# application.
虽然这是可能,但它几乎从来都不是最佳方法。
您可能想要的不是任务队列,而是节流后台任务(允许任何顺序),或者操作队列执行。
如果您想节流,请查看 SemaphoreSlim
。
如果您想要一个操作队列,请从 TPL Dataflow 查看 ActionBlock<T>
。
这两种方法都适用于同步和异步操作,而且它们都比自己编写要容易得多 "task queue"。
我想在我的 C# 应用程序中使用任务队列处理后台内容。
通过阅读网上资料,我了解到调用 Task.Factory.StartNew
会将任务排入 TaskScheduler
队列。
当我这样做时,我收到编译器警告,因为我没有等待 Task.Factory.StartNew
.
但在我的例子中,调用代码对任务的结果不感兴趣。我有处理任务失败的代码,但这不是调用代码的责任。
我想知道我的方法是否正确,或者是否有更合适的 'C# way' 执行任务队列。
I want to use a task queue for background stuff in my C# application.
虽然这是可能,但它几乎从来都不是最佳方法。
您可能想要的不是任务队列,而是节流后台任务(允许任何顺序),或者操作队列执行。
如果您想节流,请查看 SemaphoreSlim
。
如果您想要一个操作队列,请从 TPL Dataflow 查看 ActionBlock<T>
。
这两种方法都适用于同步和异步操作,而且它们都比自己编写要容易得多 "task queue"。