1

BookSleeveは非同期 IO を可能な限り使用するため、パフォーマンスが非常に優れています。

しかし、問題は、非同期操作から致命的な例外がスローされ、アプリケーションがクラッシュする可能性があることです。

キーワード await が役立つことはわかっていますが、すべての呼び出しに await を使用することはできません。

未処理の例外をグローバルにキャッチする方法はありますか?

4

1 に答える 1

1

どのバージョンのライブラリを使用していますか? BookSleeve は独自の例外を内部的に特に監視しているため、クラッシュが発生することはありませんが、次のこともできます。

  • .Errorイベントを処理する
  • TaskScheduler.UnobservedTaskExceptionイベントを処理する

厳密には、これらはどちらも必須ではありません。アプリの閉鎖を防ぐのは後者ですが、繰り返しになりますが、コードの一部にバグがあり、1 つ以上のタスクが欠落していない限り、これは問題ではありません。

しかし、より一般的なレベルでは、タスクに何が起こるかを確認することをお勧めします。そうしたくない場合でも、例外をチェックするawaita をサブスクライブする価値があるでしょう。ContinueWithまた、必ずしもする必要はありませんawait。多くの場合、connection.Wait(result)これも問題ありません。ただし、これにより、プライマリ スレッドが少し長く拘束されます (ただし、マルチプレクサは拘束されないことに注意してください)。

于 2013-08-12T07:42:28.130 に答える