在 IClientChannel 代理上调用 Abort() 会引发异常吗?
根据文档和文章,如果遇到意外的异常/故障,建议在客户端代理上调用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,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