IClientChannelプロキシでAbort()を呼び出すと、例外をスローできますか?

StackOverflow https://stackoverflow.com/questions/1418601

  •  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()の呼び出しが失敗した場合の例外キャッチケース。それが本当の目的であり、適切な使用です。

マーク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top