c# async await 按钮点击事件示例
时间: 2024-06-23 11:02:20 浏览: 148
详解C#中的Async和Await用法
在C#中,`async`和`await`关键字常用于处理异步操作,特别是当一个方法需要执行长时间的任务但不希望阻塞用户界面时。它们一起使用可以实现更平滑的用户体验。下面是一个简单的按钮点击事件示例,展示如何使用`async`和`await`来异步加载数据:
```csharp
public partial class Form1 : Form
{
private async Task LoadDataAsync()
{
// 假设LoadData方法是一个耗时操作,比如从网络获取数据
var data = await Task.Run(() => LongRunningMethod());
// 在这里处理加载后的数据
ProcessLoadedData(data);
}
private void ButtonLoad_Click(object sender, EventArgs e)
{
// 异步调用LoadDataAsync方法,不会阻塞UI线程
LoadDataAsync();
}
private void LongRunningMethod()
{
// 这里模拟一个耗时的操作,如网络请求或数据库查询
Thread.Sleep(2000); // 模拟2秒后返回数据
return "Loaded Data"; // 返回一些数据
}
private void ProcessLoadedData(string data)
{
// 在这里显示或处理加载的数据
MessageBox.Show($"Data loaded: {data}");
}
}
```
在这个例子中,当你点击"Load"按钮时,`ButtonLoad_Click`事件会被触发。它会调用`LoadDataAsync`方法,这个方法内部使用`Task.Run`将耗时的`LongRunningMethod`包装在一个新的任务中执行。由于`LoadDataAsync`被标记为`async`,所以在UI线程上它会立即返回,而不会阻塞。当数据加载完成后,`ProcessLoadedData`方法会被调用,处理加载的数据。
阅读全文