在 IClientChannel 代理上调用 Abort() 会引发异常吗?

发布于 2024-08-04 13:19:59 字数 340 浏览 5 评论 0原文

根据文档和文章,如果遇到意外的异常/故障,建议在客户端代理上调用 Abort()。请参阅以下内容(简化):

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

调用 Abort() 本身是否有可能引发异常?对 Abort() 的调用应该在其自己的 try/catch 中吗?

Based on documentation and articles it is recommended to call Abort() on a client proxy if an unexpected exception/fault is encountered. See the following (simplified):

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

Is there any possibility of the call to Abort() throwing an exception itself? Should the call to Abort() be within its own try/catch?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈甜 2024-08-11 13:19:59

不,Abort 不会失败(但 .Close() 或 .Dispose() 可能会失败)。调用 .Abort() 是终止通道的“大锤”方法 - 无论正在进行的消息处理如何,它都会被拆除。

请小心使用它 - 例如,在调用 .Close() 失败时发生异常捕获情况。这就是它的真正目的和正确使用。

马克

No, Abort will not fail (but .Close() or .Dispose() might). Calling .Abort() is the "sledgehammer" approach to terminating a channel - it's just torn down, regardless of an ongoing message handling.

Use it only carefully - e.g. in a exception catch case when calling .Close() failed. That's it's real purpose and proper use.

Marc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文