5

ドキュメントと記事に基づいて、予期しない例外/障害が発生した場合は、クライアントプロキシでAbort()を呼び出すことをお勧めします。次の(簡略化された)を参照してください。

MyServiceClient proxy = null;
try {
    proxy = new MyServiceClient();
    proxy.DoSomething();
    proxy.Close();
} catch (Exception ex) {
    if (proxy != null)
        proxy.Abort();
}

Abort()の呼び出し自体が例外をスローする可能性はありますか?Abort()の呼び出しは、それ自体のtry / catch内にある必要がありますか?

4

1 に答える 1

4

いいえ、Abort は失敗しません (ただし、.Close() または .Dispose() は失敗する可能性があります)。.Abort() の呼び出しは、チャネルを終了するための「ハンマー」アプローチです。進行中のメッセージ処理に関係なく、単に取り壊されます。

慎重に使用してください。たとえば、.Close() の呼び出しが失敗したときに例外をキャッチする場合などです。それが本当の目的であり、正しい使い方です。

マルク

于 2009-09-13T19:42:07.733 に答える