C# 等待非异步方法

C# 等待非异步方法,c#,task-parallel-library,C#,Task Parallel Library,我完全被C#中的整个等待/异步模式弄糊涂了 我有一个表单应用程序,我想调用一个需要20秒才能完成大量处理的方法。因此,我想等待它。我认为正确的方法是将其标记为async Task,但这样做会产生一个警告,因为我不会在其中的任何位置使用wait 谷歌透露了一些关于返回TaskCompletionSource的信息,但我没有返回类型,因为它是空的 我如何使用wait调用此方法?按如下方式调用您的方法: await Task.Run(() => YourMethod()); 当您使用Task.

我完全被C#中的整个等待/异步模式弄糊涂了

我有一个表单应用程序,我想调用一个需要20秒才能完成大量处理的方法。因此,我想等待它。我认为正确的方法是将其标记为
async Task
,但这样做会产生一个警告,因为我不会在其中的任何位置使用
wait

谷歌透露了一些关于返回
TaskCompletionSource
的信息,但我没有返回类型,因为它是空的


我如何使用
wait
调用此方法?

按如下方式调用您的方法:

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

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

async
不会在后台线程上执行该方法;我有一个你可能会觉得有用的方法。Task.Run是在主UI线程上运行“YourMethod”,还是创建一个新线程?(例如WinForms)@harag稍微研究一下(事实上来自MSDN)会发现
将指定的工作排队以在线程池上运行,并返回表示该工作的任务对象。
因此答案很有可能(我相信肯定是针对WinForms的)。