C#Winform里的async和await异步

来源:互联网 发布:代理服务器软件下载 编辑:程序博客网 时间:2024/06/04 18:41

 1个按钮,2个textbox,下面这样可以正确异步,窗体也不会死掉,textBox2会先有结果,textBox1再有结果

    private async void button1_Click(object sender, EventArgs e)

        {
            Does();
            textBox2.Text = "1";
        }


        private Task<string> DoWork()
        {
            return Task.Run(() =>
               {
            Thread.Sleep(4000);
            return "Done with work!";
               }
                );
        }
        private async void Does()
        {
            string text = await DoWork();
            textBox1.Text = text;

        }

如果把按钮事件改成下面这样,窗体不会死,但不会异步执行

   private async void button1_Click(object sender, EventArgs e)

        {
            textBox2.Text =await DoWork();
            textBox2.Text = "1";
        }
0 0
原创粉丝点击