我的应用程序将必须等待来自外部系统的一系列事件,这些事件可能需要长达 5 分钟才能到达。是否建议使用 async/await?如果不是,你应该使用什么?
如果您像这样开始任务,那么可能没问题。这会将任务启动为“长时间运行”,并且 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);
}
但是这些问题始终取决于应用程序的整体工作负载及其运行的机器。如果您有足够的资源,谁会关心一项长时间运行的任务。但如果您的机器很小并且您想做很多其他事情...请小心。