读过线程Is SqlCommand.Dispose enough?和Closing and Disposing a WCF Service后,我想知道对于SqlConnection这样的类,或者从Stream类继承的几个类中的一个,关闭Dispose而不是关闭有关系吗?
发布于 2008-09-14 03:22:13
对于SqlConnection
,从连接本身的角度来看,它们是等效的。根据Reflector的说法,Dispose()
调用Close()
以及执行一些额外的内存释放操作--主要是通过将成员设置为null。
对于Stream,它们实际上是等效的。Stream.Dispose()
只需调用Close()。
发布于 2010-07-10 06:42:52
将类型转换为iDisposable,并对其调用dispose。这将调用配置为实现"iDisposable.Dispose“的任何方法,而不管函数的名称是什么。
发布于 2017-06-19 22:38:51
通常,我们在Close()、Abort()和Dispose()中都会遇到问题,但让我来告诉你它们之间的区别。
1) ABORT:-我不建议使用这个选项,因为当调用abort时,客户端将在不通知服务器的情况下删除连接,因此服务器将等待一段时间(大约1分钟)。如果您有批量请求,则不能使用abort(),因为它可能会导致有限的连接池超时。
2) Close:- Close是关闭连接的好方法,因为当关闭连接时,它会调用服务器,并确认服务器也在那一侧关闭。
这里,还有一件事要看。在某些情况下,如果生成错误,那么最后用connection.close()编写代码并不是一个好方法,因为那时通信状态将是错误的。
3) Dispose :-是一种关闭,但关闭连接后不能再打开。
所以试着这样做,
private void CloseConnection(Client client)
{
if (client != null && client.State == CommunicationState.Opened)
{
client.Close();
}
else
{
client.Abort();
}
}
https://stackoverflow.com/questions/61092
复制相似问题