Показывать диалог при обработке данных - PullRequest
2 голосов
/ 02 мая 2019

Я хочу показать диалог загрузки, когда я выполняю задачу блокировки пользовательского интерфейса, поэтому я сделал это:

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 голосов
/ 02 мая 2019

Вы можете попробовать запустить его в потоке с 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();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...