等待非异步方法

Nib*_*Pig 21 c# task-parallel-library

我对C#中的整个await/async模式感到很困惑.

我有一个表单应用程序,我想调用一个需要20秒才能进行大量处理的方法.所以我想要await它.我认为正确的方法是将其标记为async Task但是这样做会产生警告,因为我不在其中的await任何地方使用它.

谷歌透露了一些关于返回的事情,TaskCompletionSource<T>但我没有返回类型,因为它是无效的.

如何使用此方法await

Syn*_*der 54

调用您的方法如下:

await Task.Run(() => YourMethod());
Run Code Online (Sandbox Code Playgroud)

当您使用Task.Run方法时,它会为您创建一个等待的任务.

  • @harag 进行一些研究(实际上来自 MSDN)会发现 [Task.Run](https://msdn.microsoft.com/en-us/library/hh160373(v=vs.110).aspx)`排队指定的工作在线程池上运行并返回一个代表该工作的 Task 对象。`所以答案是*最有可能的*(我相信它绝对适用于 WinForms)。 (3认同)