我的应用程序必须等待来自外部系统的一系列事件,这可能需要5分钟才能到达。是否建议使用async / await?如果不是,你应该用什么?
谢谢!
答案 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);
}
但这些问题总是取决于应用程序及其运行的计算机的总体工作负载。如果你有足够的资源,谁在乎一个长期运行的任务。但是如果你的机器很小而且你想要做很多其他事情......请小心。