Alm*_*ato 0 c# task async-await
我正在尝试异步运行一些东西.这是我的代码:
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 ???;
}
Run Code Online (Sandbox Code Playgroud)
等待同步方法是非法/不良做法Search()吗?我知道我可以使用Task.Run(Search)而不是然后Search()将在另一个线程(不是在UI线程)上执行,我必须经常Invoke()在里面使用Search().
我将Search()方法的返回值从'void'更改为'Task',所以它等待但是我必须返回什么?
Jon*_*eet 10
在Search()这样的同步方法上等待是非法/不好的做法吗?
嗯,这是一个非常糟糕的主意,因为你的UI基本上会挂起.
您应该将Search方法更改为SearchAsync(为了约定)并使用异步数据库操作使其正确异步.
目前,您没有任何真正的异步:一切都将发生在您的UI线程上.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |