进度对话框不显示
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");
}
}
我的代码
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");
}
}