序言

await并非等待

async

异步调用前后可能运行在不同的线程

异步不等于多线程

yield

 

1.同步

 private void button1_Click(object sender, EventArgs e)
        {
            this.label1.Text = DoWork();
        }
        private string DoWork()
        {
            Thread.Sleep(5000);
            return "StartDo";
        }

2.异步(有返回值)

private async void button2_Click(object sender, EventArgs e)
        {
            this.label1.Text = await DoWorkAsync();
        }
        private Task<string> DoWorkAsync()
        {
            return Task.Run(() => {
                Thread.Sleep(5000);
                return "StartDo";
            });
        }

3.异步(无返回值)

 private async void button3_Click(object sender, EventArgs e)
        {
            await Task.Run(() => 
            { 
                Thread.Sleep(3000);
                MessageBox.Show("StartDo");
            });
        }

4.具有多个await的异步方法

private async void button4_Click(object sender, EventArgs e)
        {
            await Task.Run(() =>{ Thread.Sleep(3000);});
            MessageBox.Show("1");

            await Task.Run(() => { Thread.Sleep(3000); });
            MessageBox.Show("2");

            await Task.Run(() => { Thread.Sleep(3000); });
            MessageBox.Show("3");
        }

资料

https://www.cnblogs.com/Vincent-yuan/p/13417356.html

https://www.cnblogs.com/shanzhiming/p/12439214.html

.NET 异步,你也许不知道的5种用法

 

http://www.cnblogs.com/x-xk/archive/2013/06/05/3118005.html

http://www.cnblogs.com/tdws/p/5679001.html

http://www.cnblogs.com/liqingwen/p/5831951.html

http://www.cnblogs.com/liqingwen/p/5831951.html

相关文章:

  • 2021-10-14
  • 2022-01-30
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2023-03-10
猜你喜欢
  • 2021-12-18
  • 2021-12-21
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2021-11-10
相关资源
相似解决方案