我要在执行UI阻止任务时显示加载对话框,所以我这样做了:
public void RetrievePosteInformations(string posteNumber)
{
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
//try to show dialog on UI here
RecherchePosteDialog recherchePosteDialog = new RecherchePosteDialog();
_= recherchePosteDialog.ShowAsync();
//UI blocking task
foreach(KeyValuePair<int,string> keyval in filepaths)
{
retrieveCSVInfo(keyval.Value, posteNumber, keyval.Key);
}
//after task hiding the dialog again
recherchePosteDialog.Hide();
}
但是这里Dialog
根本没有显示。我不想使用await
语句,因为该程序将始终停留在await recherchePosteDialog.ShowAsync()
上。
我只想异步显示它,并在任务完成时将其隐藏。
答案 0 :(得分:0)
您可以尝试在带有ManualResetEvent的线程中运行它。
致电时
RetrieveWait.Set();
对话框被隐藏。
示例:
private static ManualResetEvent RetrieveWait = new ManualResetEvent(false);
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
RecherchePosteDialog recherchePosteDialog = new RecherchePosteDialog();
recherchePosteDialog.ShowAsync();
RetrieveWait.WaitOne()
recherchePosteDialog.Hide();
});