を返すために、ダイアログを待っている:何が起こるかC#メインスレッドが、私は次の方法持って
public override bool SyncNavigationMethod()
{
AsyncShowDialog().Wait();
return true;
}
public Task AsyncShowDialog()
{
//code to show dialog and process user input from the dialog.
}
はSyncNavigationMethodが呼び出されたときにアプリがデッドロックに入るということです。
私はAsyncShowDialogが完了するのを待っているMainThread上で動作し、表示されているダイアログはそれを呼び出すMainThreadであるためコールバックを呼び出すことができないと思います。そして、メインスレッドはそれ自身を待っており、デッドロックです。
詳細情報:
- ランタイム - UWP。
- デバイス:電話(前述のように)デスクトップ(ダイアログが表示される前にアプリがフリーズします)。
- 私はAsyncShowDialogで.Wait()\ .Resultを使用しようとしました。
- AsyncShowDialogの実行中にコードが進行しないようにするためにAsyncShowDialogを呼び出した後、ManualResetEventを使用しようとしました。
デッドロックの疑いがありますか?
このデッドロックなしでSyncNavigationMethodからAsyncShowDialogを呼び出すにはどうすればよいですか?
ありがとうございました。
、 'Task.WhenAll'または' Await'、 'Task.Wait/Task'のいずれかが必要です。WaitAll'はデッドロックを引き起こします –