异步方法:
async 和 await 关键字用于创建异步方法,这样可以在按钮点击时执行耗时操作,而不会导致页面冻结。
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MFR {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private async void button1_Click(object sender, EventArgs e) {
await Task.Run(() => {
Task.Delay(2000).Wait();
// 长时间运行的操作
for (int i = 0; i < 10000; i++) {
Thread.Sleep(1000);
//这里我使用后台线程执行,但主界面的所有控件只能主线程访问和修改,所以这里要将更新控件操作委托给主线程执行,这里用到Control.Invoke 或 Control.BeginInvoke
// 使用 Invoke \\BeginInvoke 将更新操作委托给主 UI 线程执行
this.textBox1.Invoke((Action)(() => {
this.textBox1.AppendText($"计数 {i}\r\n");
}));
}
});
}
}
}