await 作用于 Task或者返回Task的方法,无论其有没有async修饰。
注意:如果没有使用await仅仅调用标识了async的方法,内部不会执行,只是返回一个Task
如果该方法为void,内部会执行。
//////////////////////////////////////////////////////
〇。简单使用实例。
private async void button1_Click(object sender, EventArgs e) { try { this.label1.Text= await JustDO2();//或者await JustDO(); } catch (Exception ex) { this.label1.Text=ex.Message; } } private async Task<string> JustDO() { await Task.Delay(2000); //throw new Exception("ooops"); return "OK"; } private Task<string> JustDO2() { return Task.Run(() => { Task.Delay(TimeSpan.FromSeconds(4)).Wait(); throw new Exception("oooops"); return Task.FromResult("OK"); }); }
一。使用并发的泛型方法
static async Task<T> DelayResult<T>(T result,TimeSpan delay) { await Task.Delay(delay); return result; }
如何调用,点击按钮,更新文本。
private async void button1_Click(object sender, EventArgs e) { this.label1.Text = await DelayResult<string>("OK", TimeSpan.FromSeconds(5)); }