Executar operação síncrona no thread da interface do usuário
Estou tentando desenvolver um aplicativo do Windows e ter problemas. Eu tenho um MainPage.xaml e mais 2 StartScreen.xaml e Player.xaml. Estou trocando o conteúdo da MainPage se certas condições forem verdadeiras. Então, eu tenho um evento no StartScreen que verifica se um diretório existe ou não, mas ele sempre gera um erro.
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 = "";
}
}
Quando ele atinge o ramo else, tudo fica bem, mas quando o dir está disponível, recebo a seguinte mensagem de erro:
An exception of type 'System.InvalidOperationException' occurred in System.IO.FileSystem.dll but was not handled in user code
Informações adicionais: Operações síncronas não devem ser executadas no encadeamento da interface do usuário. Considere agrupar esse método no Task.Run.
Mesmo se eu comentar o código na ramificação if, o erro ainda ocorre.
Eu tentei isso:
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 = "";
}
});
}
Ainda o mesmo erro, como eu entendi, isso deve ser executado de forma assíncrona e aguardar até que o código seja concluído, mas não parece. Eu também tentei agrupar outras coisas, mas ainda recebo os erros. Não sei como consertar isso, alguém poderia explicar por que isso está acontecendo e como consertar isso.