首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Close和Dispose -调用哪个?

Close和Dispose -调用哪个?
EN

Stack Overflow用户
提问于 2008-09-14 11:17:32
回答 3查看 135.2K关注 0票数 169

读过线程Is SqlCommand.Dispose enough?Closing and Disposing a WCF Service后,我想知道对于SqlConnection这样的类,或者从Stream类继承的几个类中的一个,关闭Dispose而不是关闭有关系吗?

EN

回答 3

Stack Overflow用户

发布于 2008-09-14 03:22:13

对于SqlConnection,从连接本身的角度来看,它们是等效的。根据Reflector的说法,Dispose()调用Close()以及执行一些额外的内存释放操作--主要是通过将成员设置为null。

对于Stream,它们实际上是等效的。Stream.Dispose()只需调用Close()。

票数 12
EN

Stack Overflow用户

发布于 2010-07-10 06:42:52

将类型转换为iDisposable,并对其调用dispose。这将调用配置为实现"iDisposable.Dispose“的任何方法,而不管函数的名称是什么。

票数 2
EN

Stack Overflow用户

发布于 2017-06-19 22:38:51

通常,我们在Close()、Abort()和Dispose()中都会遇到问题,但让我来告诉你它们之间的区别。

1) ABORT:-我不建议使用这个选项,因为当调用abort时,客户端将在不通知服务器的情况下删除连接,因此服务器将等待一段时间(大约1分钟)。如果您有批量请求,则不能使用abort(),因为它可能会导致有限的连接池超时。

2) Close:- Close是关闭连接的好方法,因为当关闭连接时,它会调用服务器,并确认服务器也在那一侧关闭。

这里,还有一件事要看。在某些情况下,如果生成错误,那么最后用connection.close()编写代码并不是一个好方法,因为那时通信状态将是错误的。

3) Dispose :-是一种关闭,但关闭连接后不能再打开。

所以试着这样做,

代码语言:javascript
复制
private void CloseConnection(Client client)
    {
        if (client != null && client.State == CommunicationState.Opened)
        {
            client.Close();
        }
        else
        {
            client.Abort();
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档