public class Resource : Idisposable{ public voID dispose() { ResourcePool.ReleaseResource(this); }}public class ResourcePool{ static Stack<Resource> pool = new Stack<Resource>(); public static Resource GetResource() { return pool.Pop(); } public static voID ReleaseResource(Resource r) { pool.Push(r); }}
和访问池一样
using (Resource r = ResourcePool.GetResource()){ r.DoSomething();}
我发现了一些关于滥用使用和dispose()进行范围处理的主题,但所有这些主题都使用了(Blah b = _NEW_ Blah()).
在离开使用范围但保留在池中之后,不会释放对象.
如果using语句只是简单地扩展到一个普通的尝试最后dispose()这应该工作正常但是在幕后发生了更多的事情,或者在未来的.Net版本中这是不可能的?
using (var conn = new sqlConnection(dbConnectionString)) { // conn is visible insIDe this scope ...} // conn gets released back to its connection pool总结
以上是内存溢出为你收集整理的c# – 使用和Dispose()滥用范围处理不被释放的对象?全部内容,希望文章能够帮你解决c# – 使用和Dispose()滥用范围处理不被释放的对象?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)