对于长时间运行的操作是否建议使用 async/await ? [已关闭]

问题描述 投票:0回答:1

我的应用程序将必须等待来自外部系统的一系列事件,这些事件可能需要长达 5 分钟才能到达。是否建议使用 async/await?如果不是,你应该使用什么?

c# .net asynchronous async-await
1个回答
1
投票

如果您像这样开始任务,那么可能没问题。这会将任务启动为“长时间运行”,并且 TPL 可能会在不同的 CPU 上调度它,并且不会使用 ThreadPool 线程:

void RunLongTask()
{
     // long work to do

     // in case of wpf you can report progress to ui
     Dispatcher.Invoke(ProgressDelegate, 0);

     // more work

     Dispatcher.Invoke(ProgressDelegate, 1);

     // etc...
}
async Task RunLongTaskAsync()
{
    await Task.Factory.StartNew(RunLongTask, TaskCreationOptions.LongRunning);
}

但是这些问题始终取决于应用程序的整体工作负载及其运行的机器。如果您有足够的资源,谁会关心一项长时间运行的任务。但如果您的机器很小并且您想做很多其他事情...请小心。

© www.soinside.com 2019 - 2024. All rights reserved.