IClientChannelプロキシでAbort()を呼び出すと、例外をスローできますか?
-
07-07-2019 - |
質問
ドキュメントおよび記事に基づいて、予期しない例外/障害が発生した場合、クライアントプロキシでAbort()を呼び出すことをお勧めします。以下を参照してください(簡略化):
MyServiceClient proxy = null;
try {
proxy = new MyServiceClient();
proxy.DoSomething();
proxy.Close();
} catch (Exception ex) {
if (proxy != null)
proxy.Abort();
}
Abort()の呼び出し自体が例外をスローする可能性はありますか? Abort()の呼び出しは、独自のtry / catch内にあるべきですか?
解決
いいえ、中止は失敗しません(ただし、.Close()または.Dispose()は失敗する可能性があります)。 .Abort()を呼び出すことは、「ハンマー」です。チャンネルを終了するアプローチ-進行中のメッセージ処理に関係なく、ただ破棄されます。
慎重に使用してください-例.Close()の呼び出しが失敗した場合の例外キャッチケース。それが本当の目的であり、適切な使用です。
マーク
所属していません StackOverflow