【发布时间】:2017-02-20 11:06:18
【问题描述】:
我的代码编译正确,但收到警告
此异步方法缺少“等待”运算符,将同步运行。 考虑使用 'await' 运算符来等待非阻塞 API 调用, 或 'await Task.Run(...)' 在后台线程上执行 CPU 密集型工作。
private async void Form1_Load(object sender, EventArgs e)
{
//await longRunningRoutine();
await Task.Run(async () =>
{
await longRunningRoutine(); ;
});
label1.Text = "hello test";
}
public async Task longRunningRoutine()
{
await Task.Delay(10000);
}
那么请告诉我我收到警告的代码中缺少什么? 如何解决这个问题。谢谢
【问题讨论】:
-
longRunningRoutine()究竟做了什么? -
用
await Task.Delay(10000);替换睡眠 -
您的异步方法(longRunningRoutine)缺少等待操作符,将同步运行...
-
我更新了代码,现在一切正常。谢谢
-
你的真实代码真的有
Task.Delay()吗?如果不是,那么当您尝试将此代码转换为其他代码(不可等待)时,您将遇到同样的问题......但无论如何您已经通过使用await Task.Run()解决了它。
标签: c# winforms asynchronous