async/await

不阻塞主线程:遇到耗时操作(如下载文件、读数据库),程序不会卡死,UI界面依然可以滑动或点击。
代码像同步一样好读:不用写一堆复杂的回调函数,代码依然可以自上而下顺序阅读。

————————————————————————————————————————————————————————————————————————————————————

// 模拟一个耗时2秒的任务
async Task DoWorkAsync()
{
Console.WriteLine("开始工作...");
await Task.Delay(2000); // 暂停2秒,但不卡死程序
Console.WriteLine("工作完成!");
}

————————————————————————————————————————————————————————————————————————————————————

// 异步获取一个数字
async Task GetNumberAsync()
{
await Task.Delay(1000); // 模拟耗时
return 100; // 返回结果
}

// 调用并获取结果
int num = await GetNumberAsync();
Console.WriteLine(num); // 输出 100

————————————————————————————————————————————————————————————————————————————————————

// 按钮点击事件必须是 async void
private async void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false; // 禁用按钮防连点
await Task.Delay(3000); // 模拟耗时下载
MessageBox.Show("下载完成!"); // 自动回到UI线程弹窗
button1.Enabled = true;
}

posted @ 2026-08-09 23:11  菜鸟的奋斗军  阅读(3)  评论(0)    收藏  举报