c# – UI线程中Task.Wait的替代方案

前端之家收集整理的这篇文章主要介绍了c# – UI线程中Task.Wait的替代方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道在UI线程中调用Task.Wait是不好的.它导致僵局.请参阅

Constructor invoke async method

Await,and UI,and deadlocks! Oh my!

请使用以下代码

public MainPage()
    {
        this.InitializeComponent();

        step0();
        step1();
    }

    private async Task step0()
    {
        await Task.Delay(5000);
        System.Diagnostics.Debug.WriteLine("step 0");
    }

    private async Task step1()
    {
        await Task.Delay(3000);
        System.Diagnostics.Debug.WriteLine("step 1");
    }
}

如何确保在“步骤1”之前始终打印“步骤0”?使用Task.Wait会导致死锁.这是Windows应用商店应用

解决方法

您可以使用Task.ContinueWith将任务链接在一起,以便它们按顺序发生.
public MainPage()
{
    this.InitializeComponent();

    step0().ContinueWith(t => step1());
}

此外,阿列克谢的评论是正确的. Task.Wait将阻止UI线程.死锁是另一回事.

猜你在找的C#相关文章