我正在尝试异步运行一些东西。这是我的代码:
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线程上),我必须经常在Invoke()
内使用Search()
。< / p>
我将Search()
方法的返回值从'void'更改为'Task',所以它等待但是我必须返回什么?
答案 0 :(得分:10)
等待Search()等同步方法是非法/不好的做法吗?
这是一个非常糟糕的主意,因为你的用户界面基本上会挂起。
您应该将Search
方法更改为SearchAsync
(为了约定)并使用异步数据库操作使其正确异步。
目前,您没有任何真正的异步:一切都将在您的UI线程上发生。