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