2013-09-16 225 views
12

我完全被C#中的整个await/async模式所困惑。等待非异步方法

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

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

如何使用await来调用此方法?

+3

'async'不会在后台线程上执行该方法;我有一个['async' /'await'介绍](http://blog.stephencleary.com/2012/02/async-and-await.html),您可能会发现有帮助。 –

回答

35

打电话给你的方法如下:

await Task.Run(() => YourMethod()); 

当你使用它为您创建一个awaitable任务Task.Run方法。

+0

Task.Run是否在主UI线程上运行“YourMethod”,或创建一个新线程? (例如WinForms) – harag