1. 程式人生 > 其它 >簡單的async和await用法

簡單的async和await用法

如圖,需求是單擊按鈕後禁用按鈕,同時文字框可以輸入,後臺開啟執行緒,當執行緒完成時再啟用按鈕。首先我們可以使用傳統的非同步方式處理,程式碼如下:

private void button1_ClickAsync(object sender, EventArgs e)
{
    this.button1.Enabled = false;
    Task.Factory.StartNew(() =>
    {
        Thread.Sleep(5000);
        this.Invoke(new Action(() =>
        {
            this
.button1.Enabled = true; })); }); }

沒有什麼多解釋的,那麼我們如果使用await和async怎麼處理呢?如下:

private async void button1_ClickAsync(object sender, EventArgs e)
{
    try
    {
        this.button1.Enabled = false;
        string result = await ActionAsync();
        this.textBox1.Text = result;
        this
.button1.Enabled = true; } catch (Exception ex) { this.textBox1.Text = ex.Message; } } private async Task<string> ActionAsync() { return await Task.Factory.StartNew(() => { Thread.Sleep(5000); return "success"; }); }

可以看出,我們就像是使用同步程式碼一樣的方式在編寫非同步程式碼,非常的爽。特此記錄,方便以後查閱。