14

上的Close方法ICommunicationObject可以抛出两种类型的异常,如 MSDN在这里概述的那样。我理解为什么该Close方法会抛出这些异常,但我不明白为什么Dispose服务代理上的方法调用该Close方法时没有try围绕它。您的方法不是Dispose您想要确保不抛出任何异常的地方吗?

4

2 回答 2

9

它似乎是 .NET 代码中的一种常见设计模式。这是来自框架设计指南的引用

考虑提供方法 Close(),除了 Dispose(),如果 close 是该领域的标准术语。这样做时,重要的是使 Close 实现与 Dispose ...

这是一篇博客文章,您可以在其中找到此 System.ServiceModel.ClientBase 设计问题的解决方法

于 2008-08-23T16:19:56.747 回答
9

是的,通常 Dispose 是您要确保不引发异常的地方之一。但是,根据这个 MSDN论坛主题,这种行为有一些历史原因。因此,推荐的模式是 try{Close}/catch{Abort} 范例。

于 2008-08-31T02:05:27.593 回答