Скрыть все видимые диалоги Metro, прежде чем показывать другой

я используюMahApps.Metro на моем проекте WPF, и я строю класс, чтобы помочь мне показатьДиалоги. Я хотел бы знать, есть ли способ закрыть все видимые диалоги, прежде чем открывать еще один.

Иногда, когда я показываюProgressDialog а затемMessageDialog ProgressDialog неправильно закрывается и остается в фоновом режиме, поэтому, когда я закрываю MessageDialog, он остается там, замораживая пользовательский интерфейс.

Вот как я сейчас пытаюсь скрыть все диалоги:

public static async void HideVisibleDialogs(MetroWindow parent)
{
    BaseMetroDialog dialogBeingShow = await parent.GetCurrentDialogAsync<BaseMetroDialog>();

    while (dialogBeingShow != null)
    {
        await parent.HideMetroDialogAsync(dialogBeingShow);
        dialogBeingShow = await parent.GetCurrentDialogAsync<BaseMetroDialog>();
    }
}

Я называю это так:

public static MessageDialogResult ShowMessage(String title, String message, MetroWindow parent, Int32 timeout, MessageDialogStyle style, MetroDialogSettings settings, MessageDialogResult defaultResult)
{
    AutoResetEvent arEvent = new AutoResetEvent(false);

    App.Current.Dispatcher.Invoke(() =>
    {
        HideVisibleDialogs(parent);
        arEvent.Set();
    });

    arEvent.WaitOne();

    [Rest of method]
}

Любая помощь приветствуется. Спасибо!

@РЕДАКТИРОВАТЬ

По-видимому, проблема, кажется, решена, благодаряТомас Фройденберг

Вот как это сейчас:

public static Task HideVisibleDialogs(MetroWindow parent)
{
    return Task.Run(async () => 
    {
        await parent.Dispatcher.Invoke(async () =>
        {
            BaseMetroDialog dialogBeingShow = await parent.GetCurrentDialogAsync<BaseMetroDialog>();

            while (dialogBeingShow != null)
            {
                await parent.HideMetroDialogAsync(dialogBeingShow);
                dialogBeingShow = await parent.GetCurrentDialogAsync<BaseMetroDialog>();
            }
        });
    });      
}

И я называю это так:

HideVisibleDialogs(parent).Wait();

Ответы на вопрос(1)

Ваш ответ на вопрос