Task
C# 5.0 以降では、async および await キーワードにより簡素化されます。タスクベースのプログラミングが顕著になります。 ContinueWith に依存する代わりに、非同期メソッドを使用すると、try/catch ブロックを直接使用して例外を処理できます。
try { // Start the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // Await the task. await task; } catch (Exception e) { // Perform cleanup here. }
C# の古いバージョンの場合、 TaskContinuationOptions 列挙を使用した ContinueWith オーバーロードは、 used:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
OnlyOnFaulted は、先行タスクが例外をスローした場合にのみ継続が実行されることを保証します。複数の継続をチェーンして、さまざまなケースを処理できます。
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
async/await アプローチを選択するか、TaskContinuationOptions を使用した ContinueWith テクニックを選択するかにかかわらず、これらのメソッドを使用すると、C# タスクで例外を効果的にキャッチし、アプリケーションが確実に例外を処理できるようになります。予期せぬエラーは正常に実行されます。
以上がC# タスク (Async/Await および ContinueWith) で例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。