关闭并处理 - 调用哪个? [英] Close and Dispose - which to call?
问题描述
已阅读主题 SqlCommand.Dispose 足够了吗? 和 关闭和处理 WCF 服务 我想知道 SqlConnection 等类或从 Stream 继承的几个类之一如果我关闭 Dispose 而不是 Close 有关系吗?
Having read the threads Is SqlCommand.Dispose enough? and Closing and Disposing a WCF Service I am wondering for classes such as SqlConnection or one of the several classes inheriting from the Stream class does it matter if I close Dispose rather than Close?
推荐答案
我想澄清一下这个情况.
根据 Microsoft 指南,在合适的地方提供 Close
方法是一种很好的做法.这里是框架设计指南
I want to clarify this situation.
According to Microsoft guidelines, it's a good practice to provide Close
method where suitable. Here is a citation from Framework design guidelines
考虑提供方法 Close()
,除了 Dispose()
,如果 close 是该领域的标准术语.这样做时,重要的是使 Close
实现与 Dispose
...
Consider providing method
Close()
, in addition to theDispose()
, if close is standard terminology in the area. When doing so, it is important that you make theClose
implementation identical toDispose
...
在大多数情况下,Close
和 Dispose
方法是等效的.在SqlConnectionObject
的情况下,Close
和Dispose
之间的主要区别是:
In most of cases Close
and Dispose
methods are equivalent. The main difference between Close
and Dispose
in the case of SqlConnectionObject
is:
一个应用程序可以调用Close
更多不止一次.也不例外生成.
An application can call
Close
more than one time. No exception is generated.
如果你调用了 Dispose
方法SqlConnection
对象状态将是重启.如果您尝试调用任何处置 SqlConnection
的方法对象,您将收到异常.
If you called Dispose
method
SqlConnection
object state will be
reset. If you try to call any
method on disposed SqlConnection
object, you will receive exception.
说:
- 如果使用连接对象一时间,使用
Dispose
. - 如果必须重用连接对象,使用
Close
方法.
这篇关于关闭并处理 - 调用哪个?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!