async和await是个很方便的异步操作写法.
其原理和内容我也不了解,先吃饱再看营养成分吧.
async标记的方法必须内部使用了await,不然就不正确的标记,报错.
通常方法内await的是:
框架封装好的方法:如await Task.Delay(x),
兰姆达表达式:await Task.Run<T>(()=>{ return deafult<T>}),
具体的方法:await YourMethod();
先看看怎么调用框架或者他人提供的async方法,以Task.Delay()为例子:
举个例子,实现再按钮事件中不阻塞界面的延迟n毫秒后操作;
public Form1()
{
InitializeComponent();
}
private async void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
await DelayNSecondMessage(3000,"按钮1被按下");
button1.Enabled = true;
}
Timer tm = new Timer();
private void Form1_Load(object sender, EventArgs e)
{
tm.Interval = 100;
tm.Tick += Tm_Tick;
tm.Enabled = true;
tm.Start();
}
private vo