进度对话框不显示

Progress Dialog don't show

我的代码

protected async Task SyncAll()
{
    var ProgressAlert = await this.ShowProgressAsync("Please wait...", "Sync....");  //show message
    ProgressAlert.SetIndeterminate(); //Infinite

    try
    {
       //some magic code here
       //show info
       await ProgressAlert.CloseAsync();
       await this.ShowMessageAsync("End","Succes!");
    }
    catch 
    {
        await ProgressAlert.CloseAsync();
        await this.ShowMessageAsync("Error!", "Contact with support");
    }

}

private async void SyncButton_Click(object sender, RoutedEventArgs e)
{
    await SyncAll(); 
}

我只收到一个变暗的 window 而没有 ProgressDialog。 我想执行我的代码并使用 ProgressDialog 实例在他内部进行操作。

我做错了什么?

正如人们在评论中解释的那样,问题可能是您的 "Magic code" 可能是同步的,并且阻塞了整个 UI。您要做的是使此调用异步。

一个简单的方法是围绕您的同步代码调用 Task.Run

假设您将 "Magic Code" 放入一个名为 MyMagicCode() 的方法中。

protected async Task SyncAll()
{
    var ProgressAlert = await this.ShowProgressAsync("Please wait...", "Sync....");  //show message
    ProgressAlert.SetIndeterminate(); //Infinite

    try
    {
       await Task.Run(() => MyMagicCode());

       //show info
       await ProgressAlert.CloseAsync();
       await this.ShowMessageAsync("End","Succes!");
    }
    catch 
    {
        await ProgressAlert.CloseAsync();
        await this.ShowMessageAsync("Error!", "Contact with support");
    }

}