当前位置: 首页 > 工具软件 > WP Async Task > 使用案例 >

async、await与task

赏新知
2023-12-01

task是开启一个新的线程去做你需要做的事情,后面的代码会直接运行,这样可以防止线程阻塞

private void button1_Click(object sender, EventArgs e)
        {
            Task.Run(()=> {

                Thread.Sleep(5000);
                Invoke(new Action(()=> {
                    label1.Text = "123";
                }));
            });

            label2.Text = "456";//标签一5秒后内容变成123,标签二内容立刻变成456
        }

Task.WaitAll(),Task.WaitAny() 等待所有/任意一个线程完成后继续下面的代码

Task.WhenAll().ContinueWith(),Task.WhenAny().ContinueWith() 主线程不等待,当完成所有/任意一个线程后继续执行

async、await也可以防止线程阻,不过可以实现等待await后面的代码执行完成后再执行后面的代码

public async Task<string> getData()
        {
            await Task.Delay(5000);
            return "123";
        }

 private async void button2_Click(object sender, EventArgs e)
        {
            label1.Text = await getData();

            label2.Text = "456";//标签一5秒后内容变成123,标签二5秒后内容变成456
        }

 类似资料: