:例外処理非待望のは、私がメインメソッドを使用してコンソールアプリケーション、このような何か持っていると仮定しましょうタスク
public static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) =>
{
Console.WriteLine("App Unobserved");
};
TaskScheduler.UnobservedTaskException += (sender, eventArgs) =>
{
Console.WriteLine("Task Unobserved");
};
Task.Run(async() => await MyAwesomeMethod());
// other awesome code...
Console.ReadLine();
}
public static async Task MyAwesomeMethod()
{
// some useful work
if (something_went_wrong)
throw new Exception();
// other some useful work
}
だから、私はちょうどMyAwesomeMethod(ファイア・アンド・フォーゲット)を実行して、やってみたいです他の仕事もありますが、未処理の例外があるかどうかも知りたいと思っています。しかし、アプリケーションは問題の兆候なしに正常に終了します(例外はちょうど飲み込まれます)。
私はMyAwesomeMethod()から例外を処理するには、待つことも、Task.Run(...)を使用することもできます。
'しかし、私はまた、未処理のexceptions.'そこかどうかを知りたい - 、それそれは本当に火事ではないと忘れているのですか? –
スレッドプールスレッドで別の非同期操作を開始する理由はありません。 'MyAswesomeMethod'を起動したい場合は、' MyAwesomeMethod'を呼び出します。 *既に*非同期です。それを非同期ラムダにラップし、スレッドプールスレッドでそれを開始することは、システムリソースを無駄にするだけです。 – Servy
@Servy実際には、理由はあります。私はすべてがOKならMyAwesomeMethodについて何も知りたくありませんが、その中の未処理の例外についてすべてを知りたいと思っています。 – Andrew