草庐IT

idisposable

全部标签

java - 是否应该将 Closeable 用作 .NET 的 IDisposable 的 Java 等效项?

更新:正如@PaulGroke在下面指出的,Java7发生了变化:现在有AutoCloseable.与流无关并受新的try-with-resources支持构造。AutoCloseable是.NET的IDisposable接口(interface)的直接Java等效项。Java1.5中引入的Closeable接口(interface)与流紧密相关,甚至还有一个IOException的异常说明符。这表明它应该只用于流或其他与IO相关的Activity,而不是通用的清理逻辑。当然,close()方法的描述在流/IO上下文之外绝对没有意义:voidclose()throwsIOExcepti

java - 是否应该将 Closeable 用作 .NET 的 IDisposable 的 Java 等效项?

更新:正如@PaulGroke在下面指出的,Java7发生了变化:现在有AutoCloseable.与流无关并受新的try-with-resources支持构造。AutoCloseable是.NET的IDisposable接口(interface)的直接Java等效项。Java1.5中引入的Closeable接口(interface)与流紧密相关,甚至还有一个IOException的异常说明符。这表明它应该只用于流或其他与IO相关的Activity,而不是通用的清理逻辑。当然,close()方法的描述在流/IO上下文之外绝对没有意义:voidclose()throwsIOExcepti

c# - 是否可以将 ReSharper 设置为在 IDisposable 处理不当时发出警告?

如果我忘记将代码包装在usingblock中,或者在终于block了? 最佳答案 正确的自动Dispose分析需要全局方式的DFA(数据流分析)。您不太可能创建一个IDisposable对象并且不对其调用任何方法并且不将其作为参数传递。如果将一次性对象传递给其他方法(包括调用其成员,当隐式传递“this”时),该工具应分析是否未在内部调用Dispose,或者该对象未存储在某处以供以后处理。也就是说,如果单纯地检查一次性对象实际上是否通过“使用”构造或以任何其他方式处置,会产生过多的误报,并使分析变得无用。

c# - IDisposable:是否有必要在 finally {} 上检查 null?

在您在网络上找到的大多数明确不使用“使用”的示例中,模式类似于:SqlConnectionc=newSqlConnection(@"...");try{c.Open();...}finally{if(c!=null)//如果您使用“using”并查看生成的IL代码,您可以看到它生成了null的检查L_0024:ldloc.1L_0025:ldnullL_0026:ceqL_0028:stloc.sCS$4$0000L_002a:ldloc.sCS$4$0000L_002c:brtrue.sL_0035L_002e:ldloc.1L_002f:callvirtinstancevoid[m

c# - 处理 IDisposable 的最佳实践

我有一个类层次结构,其中的每个成员都可以创建IDisposable对象。我添加了一个List属性添加到此层次结构中的基类,我在创建时向其添加任何一次性对象。根Dispose方法遍历此列表并调用Dispose对于列表中的每个项目并清除列表。在应用程序中,我显式调用了顶部对象的Dispose。方法,导致处置在层次结构中级联。这行得通,但是有更好的方法吗?我是否无意中复制了框架中已有的某些功能?(注意-所讨论的对象的生命周期不能将它们包装在usingblock中或以与创建它们相同的方法处理它们。)编辑只是为了澄清-我只保留那些需要保留的对象。有些以与创建它们相同的方法处理,但许多以不可能的方

c# - 识别 IDisposable 对象

我必须检查其他人编写的存在内存泄漏的代码。现在我正在搜索一次性对象以使用using语句将它们包裹起来,我想知道是否有一种快速的方法可以告诉您声明的所有一次性对象。我的意思是像resharper或其他visualstudio插件。谢谢。 最佳答案 我明白你的意思。我不知道,但看看FxCop。它可能在某处有一条规则,检查是否未处置实现IDisposable的对象。请记住,只是一种预感。更新:MitchWheat写道:FxCopincludestherule,thatssaysalltypesthatderivefromtypesthat

c# - 如何构建 C# 控制台应用程序以高效使用 IDisposable 数据库资源?

这是我为C#控制台应用程序提出的(非常简化以说明问题空间)设计。数据库连接实现IDisposable,此解决方案不允许使用数据库连接对象。有人可以为控制台应用程序提出更正确的结构吗?这是我需要经常解决的问题。classProgram{SQLiteConnectionsourceConnection;SQLiteConnectiondestinationConnection;staticvoidMain(string[]args){Programshell=newProgram();//getconnectionstringsfromcommandlineargumentsstrings

c# - 为什么 CancellationTokenRegistration 存在以及它为什么实现 IDisposable

我一直看到在CancellationTokenRegistration结果上使用Cancellation.Register和using子句的代码:using(CancellationTokenRegistrationctr=token.Register(()=>wc.CancelAsync())){awaitwc.DownloadStringAsync(newUri("http://www.hamster.com"));}我知道你应该确保你Dispose一个IDisposable,但为什么它甚至实现了IDisposable?它必须释放什么资源?它唯一的方法是考虑平等。如果您不处置它会怎

c# - SqlConnection SqlCommand SqlDataReader IDisposable

SqlConnection、SqlCommand和SqlDataReader都实现了IDisposable接口(interface)。我阅读了有关始终将IDisposables包装到usingblock中的最佳实践。所以,我查询数据的常见场景看起来像这样(当然,在更大的上下文中,像linq2sql这样的映射工具是合适的,但假设我们想在这里使用这种方法):using(SqlConnectioncn=newSqlConnection("myConnectionstring")){using(SqlCommandcm=newSqlCommand("myQuery",cn)){//maybea

c# - 如何找到所有实现 IDisposable 的类?

我正在从事一个大型项目,我的任务之一是消除可能的内存泄漏。在我的代码中,我注意到有几个IDisposable项目没有被处理掉,并且已经修复了这个问题。但是,这让我想到了一个更基本的问题,如何找到我的项目中所有使用的实现IDisposable的类?(不是自定义创建的类,而是已使用的标准库类)。我已经找到了一个不太明显的实现IDisposable的类(DataTable实现了MarshalByValueComponent,它继承了IDisposable)。现在,我正在使用MSDN手动检查任何可疑的类,但有没有什么方法可以使这个过程自动化? 最佳答案