Synchronen Betrieb auf Ui-Thread durchführen

Ich versuche, eine Windows-App zu entwickeln und stoße auf Probleme. Ich habe eine MainPage.xaml und 2 andere StartScreen.xaml und Player.xaml. Ich wechsle den Inhalt der MainPage, wenn bestimmte Bedingungen zutreffen. Ich habe also ein Ereignis in StartScreen, das prüft, ob ein Verzeichnis existiert oder nicht, aber es löst jedes Mal einen Fehler aus.

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 = "";
        }

    }

Wenn es auf den Zweig else trifft, ist alles in Ordnung, aber wenn das Verzeichnis verfügbar ist, wird folgende Fehlermeldung angezeigt:

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

Zusätzliche Informationen: Auf dem UI-Thread sollten keine synchronen Vorgänge ausgeführt werden. Erwägen Sie, diese Methode in Task.Run einzufügen.

Auch wenn ich den Code in der if-Verzweigung auskommentiere, kommt der Fehler immer noch.

Ich habe es versucht:

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 = "";
            }
        });
    }

Immer noch der gleiche Fehler, wie ich verstanden habe, sollte dies asynchron ausgeführt werden und warten, bis der Code vollständig ist, aber es scheint nicht so. Ich habe auch versucht, ein paar andere Sachen, aber immer noch die Fehler zu bekommen. Ich weiß nicht, wie ich das beheben soll. Könnte jemand erklären, warum dies geschieht und wie ich das beheben soll?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage