Выполнить синхронную операцию в потоке пользовательского интерфейса

Я пытаюсь разработать приложение для Windows и столкнуться с проблемами. У меня есть MainPage.xaml и еще 2 StartScreen.xaml и Player.xaml. Я переключаю содержимое главной страницы, если выполняются определенные условия. Таким образом, у меня есть событие в StartScreen, оно проверяет, существует ли каталог, или нет, но каждый раз выдает ошибку.

private void GoToPlayer_Click(object sender, RoutedEventArgs e)
    {

        if (Directory.Exists(this.main.workingDir + "/" + IDText.Text + "/Tracks")) // Error occurs here
        {
            this.main.Content = this.main.player; //here i switch between different ui forms
        }
        else
        {
            MessageBox.Text = "CD not found";
            IDText.Text = "";
        }

    }

Когда он попадает в ветку else, все в порядке, но когда каталог доступен, я получаю следующее сообщение об ошибке:

An exception of type 'System.InvalidOperationException' occurred in System.IO.FileSystem.dll but was not handled in user code

Дополнительная информация: синхронные операции не должны выполняться в потоке пользовательского интерфейса. Попробуйте обернуть этот метод в Task.Run.

Даже если я комментирую код в ветке if, ошибка все равно приходит.

Я попробовал это:

private async void GoToPlayer_Click(object sender, RoutedEventArgs e)
    {
        await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {
            if (Directory.Exists(this.main.workingDir + "/" + IDText.Text + "/Tracks")) // Error occurs here
            {
                this.main.Content = this.main.player; //here i switch between different ui forms
            }
            else
            {
                MessageBox.Text = "CD not found";
                IDText.Text = "";
            }
        });
    }

Все та же ошибка, как я понял, она должна выполняться асинхронно и ждать, пока код не завершится, но это не так. Я также пробовал кучу других вещей, но все равно получаю ошибки. Я не знаю, как это исправить, может кто-нибудь объяснить, почему это происходит и как это исправить.

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

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