zoukankan      html  css  js  c++  java
  • 简单的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";
        });
    }

    可以看出,我们就像是使用同步代码一样的方式在编写异步代码,非常的爽。特此记录,方便以后查阅。

  • 相关阅读:
    Aspect Oriented Programming
    jsp01
    监听器
    Java编写验证码
    servlet07
    MySQL02
    MySQL01
    Java的jdk1.6与jre1.8中存在的差异
    登陆验证和二级联动
    ajax和json
  • 原文地址:https://www.cnblogs.com/duanjt/p/15008645.html
Copyright © 2011-2022 走看看