[英]Use async/await on synchronous operations (mainly to stay on UI thread)
我正在尝试异步运行一些东西。 这是我的代码:
private async void SearchButton_Click(object sender, EventArgs e)
{
await Search();
}
// Inside search there is no async operation
public Task Search()
{
// search for data in DB
// update DataGridView and other elements on UI
// How to return null/void/nothing?
return ???;
}
等待Search()
类的同步方法是否非法/不好? 我知道我可以改用Task.Run(Search)
但是Search()
将在另一个线程(而不是UI线程)上执行,并且我必须经常在Search()
内使用Invoke()
。
我将Search()
方法的返回值从“无效”更改为“任务”,因此可以等待,但是我必须返回什么?
等待Search()之类的同步方法是否非法/不好?
嗯,这是一个非常糟糕的主意,因为您的UI基本上会挂起。
您应该将Search
方法更改为SearchAsync
(为了方便起见),并使用异步数据库操作使其正确异步。
当前,您没有任何真正的异步性:一切都将在您的UI线程上发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.