处理数据时显示对话框

时间:2019-05-02 07:54:14

标签: c# uwp

我要在执行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()上。

我只想异步显示它,并在任务完成时将其隐藏。

1 个答案:

答案 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();
});