Realizar una operación sincrónica en el hilo Ui
Estoy tratando de desarrollar una aplicación de Windows y tengo problemas. Tengo un MainPage.xaml y otros 2 StartScreen.xaml y Player.xaml. Estoy cambiando el contenido de MainPage si ciertas condiciones son ciertas. Entonces, tengo un evento en StartScreen que comprueba si existe un directorio o no, pero me arroja cada vez que hay un error.
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 = "";
}
}
Cuando toca la rama else, todo está bien, pero cuando el directorio está disponible, aparece el siguiente mensaje de error:
An exception of type 'System.InvalidOperationException' occurred in System.IO.FileSystem.dll but was not handled in user code
Información adicional: Las operaciones sincrónicas no deben realizarse en el subproceso de la interfaz de usuario. Considere envolver este método en Task.Run.
Incluso si comento el código en la ramificación if, el error sigue apareciendo.
Intenté esto:
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 = "";
}
});
}
Sigue siendo el mismo error, ya que entendí que esto debería ejecutarse de forma asíncrona y esperar hasta que se complete el código, pero no parece ser así. También probé muchas otras cosas, pero aún recibo los errores. No sé cómo solucionarlo, ¿podría alguien explicarme por qué sucede esto y cómo solucionarlo?