我正在使用Reflector浏览一个DLL的反编译源代码,然后我发现了这段C#代码: protected virtual void Dispose([MarshalAs(UnmanagedType.U1)] bool flag1) { if (flag1) { ...
在返回实现IDisposable接口的对象后,我是否应该调用.Dispose()方法? myDisposableObject Gimme() { //Code return disposableResult; disposableResult.Dispose(); } 换句话...
我该如何确定是否应该在我的接口上扩展IDisposable,还是在实现我的接口的类上实现IDisposable? 我有一个不需要处理任何外部资源的接口,除了其中一个特定的实现。我的选择似乎是: 1) 在要求所有实现都实现Dispose(即使只是空方法)的接口上实现IDisposable。 ...
有时候我需要在一个函数内使用多个一次性对象。最常见的情况是使用StreamReader和StreamWriter,但有时更复杂。 嵌套的using语句很快就会增加,并且看起来很丑。 为了解决这个问题,我创建了一个小类,收集IDisposable对象,并在自己被处理时释放它们。 public...
我注意到在某些情况下,Visual Studio建议这样做。await using var disposable = new Disposable(); // Do something 不要使用这个using var disposable = new Disposable(); // Do s...
我问了我的朋友这个问题,他说finally块用于销毁在异常处理期间创建的对象。但是在C#中,GC(垃圾回收)用于销毁这种未使用的对象,那么finally块的实际用途是什么呢?请给我举一个相关的场景。
我之前有Java的经验,现在想学C#。我看过了SqlConnection SqlCommand SqlDataReader IDisposable这篇文章,明白了连接数据库的最佳实践是将SqlConnection、SqlCommand和SqlDataReader包装在一个using块中。 但...
MSDN很好地记录了BCL类型的实例成员的线程安全性,但我从未真正看到过有关如何调用IDisposable类型的Dispose方法的信息。 Dispose方法是否a)对于所有类都保证是线程安全的,b)从不保证是线程安全的,c)对于某些类保证是线程安全的(如果是这样的话,具体在哪里记录了)? ...
我有一个问题,我会标记这个问题为主观的,因为我认为它会演变成更多的讨论。我希望能得到一些好的想法或引发思考。对于这个冗长的问题我很抱歉,但你需要了解上下文。 问题基本上是: 如何处理与IoC容器相关的具体类型?具体来说,如果它们需要处理,谁负责处理它们,以及这些知识如何传播到调用代码? ...
给定一个包含 xlsx 文件的流对象,我想将其保存为临时文件,并在不再使用该文件时删除它。 我考虑创建一个实现了 IDisposable 接口的类,并将其与 using 代码块一起使用,以便在最后删除临时文件。 有没有什么方法可以将流保存到临时文件中并在使用结束时将其删除? 谢谢