在我的应用程序中,有很多oledbConnections和数据表和数据源以及更多非托管资源..其中一些被处置(通过在不再需要它们时调用Dispose())而另一个没有Dispose ()(只是为了使代码行更少!)。 问题是:如果这些非托管资源在使用后没有处理掉,是否会有任何问题?
我有时(并非所有时间)都有错误“appname停止工作..”,这是由un Disposed对象引起的错误吗?
最后,在调用Dispose()时出现错误的情况是什么?
谢谢。
答案 0 :(得分:2)
它在某种程度上取决于非托管资源。如果它是数据库连接,您最终将耗尽连接。也就是说,连接池中的所有连接都将打开但未使用。此时的数据库服务器将不允许任何新连接。所以你将无法再连接到数据库。
其他类型的资源也会出现类似的问题。你会泄漏它们,你可以进入各种奇怪的,难以调试的情况。
最佳做法是,如果课程完成后,请始终致电Dispose
或Close
。在C#中,出于这个原因,您可以使用using
语句。我不知道VB.net等效语法是什么,但不管它是什么,你都应该使用它。
答案 1 :(得分:0)
使用它们后,最好先处理所有内容。使用dispose时,清理托管和非托管资源。不正确处理这些可能会导致问题和内存泄漏,这可能是您收到该错误消息的原因。只需添加Dispose()方法:)一些额外的代码行可以最终保存您。