C# form 如何await
时间: 2024-09-09 18:07:04 浏览: 66
在 C# 中,`await` 关键字通常与异步方法配合使用,特别是那些返回 `Task` 或 `Task<T>` 的方法,用于控制异步操作的流程并等待其完成。在 Windows Forms 应用程序中,你可以在 Form 控件的事件处理方法(如 `Load`, `Click`, 等)中使用 `async` 和 `await` 来避免 UI 卡顿。
例如,假设你有一个耗时的操作(比如网络请求),你不想阻塞主线程(UI线程),可以这样做:
```csharp
private async void button_Click(object sender, EventArgs e)
{
await LongRunningOperation();
}
private async Task LongRunningOperation()
{
// 使用 Task.Run 包装长运行任务,以防止阻塞 UI
await Task.Run(() =>
{
// 执行耗时操作,如网络请求、数据库查询等
// ...
// 当操作完成后,可以更新 UI 或者抛出异常
// 更新UI部分:
this.Invoke(new Action(() => MessageBox.Show("Long operation completed.")));
// 抛出异常示例:
if (someErrorOccurred)
{
throw new Exception("An error occurred.");
}
});
}
```
在这个例子中,`button_Click` 方法是异步的,当你点击按钮时,它不会立即执行 `LongRunningOperation`,而是调用 `await` 让操作系统安排其他工作,然后继续执行下面的代码。当 `LongRunningOperation` 完成后,结果会自动回到 UI 上处理。
阅读全文