是否建议使用async / await进行长时间运行?

时间:2015-12-15 14:25:43

标签: c# .net asynchronous async-await

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

谢谢!

1 个答案:

答案 0 :(得分: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);
}

但这些问题总是取决于应用程序及其运行的计算机的总体工作负载。如果你有足够的资源,谁在乎一个长期运行的任务。但是如果你的机器很小而且你想要做很多其他事情......请小心。