9得票2回答
何时可以在Dispose中调用Finalize?

我正在使用Reflector浏览一个DLL的反编译源代码,然后我发现了这段C#代码: protected virtual void Dispose([MarshalAs(UnmanagedType.U1)] bool flag1) { if (flag1) { ...

9得票12回答
我在函数中使用Return之后应该调用Dispose()吗?

在返回实现IDisposable接口的对象后,我是否应该调用.Dispose()方法? myDisposableObject Gimme() { //Code return disposableResult; disposableResult.Dispose(); } 换句话...

29得票3回答
确定 IDisposable 应该扩展接口还是被实现在实现该接口的类中

我该如何确定是否应该在我的接口上扩展IDisposable,还是在实现我的接口的类上实现IDisposable? 我有一个不需要处理任何外部资源的接口,除了其中一个特定的实现。我的选择似乎是: 1) 在要求所有实现都实现Dispose(即使只是空方法)的接口上实现IDisposable。 ...

27得票6回答
摆脱嵌套的using(...)语句

有时候我需要在一个函数内使用多个一次性对象。最常见的情况是使用StreamReader和StreamWriter,但有时更复杂。 嵌套的using语句很快就会增加,并且看起来很丑。 为了解决这个问题,我创建了一个小类,收集IDisposable对象,并在自己被处理时释放它们。 public...

194得票2回答
使用和await使用有什么区别?我该如何决定使用哪个?

我注意到在某些情况下,Visual Studio建议这样做。await using var disposable = new Disposable(); // Do something 不要使用这个using var disposable = new Disposable(); // Do s...

8得票8回答
finally块的实际使用

我问了我的朋友这个问题,他说finally块用于销毁在异常处理期间创建的对象。但是在C#中,GC(垃圾回收)用于销毁这种未使用的对象,那么finally块的实际用途是什么呢?请给我举一个相关的场景。

26得票5回答
SqlConnection的最佳重用实践

我之前有Java的经验,现在想学C#。我看过了SqlConnection SqlCommand SqlDataReader IDisposable这篇文章,明白了连接数据库的最佳实践是将SqlConnection、SqlCommand和SqlDataReader包装在一个using块中。 但...

12得票4回答
Dispose方法的线程安全性?

MSDN很好地记录了BCL类型的实例成员的线程安全性,但我从未真正看到过有关如何调用IDisposable类型的Dispose方法的信息。 Dispose方法是否a)对于所有类都保证是线程安全的,b)从不保证是线程安全的,c)对于某些类保证是线程安全的(如果是这样的话,具体在哪里记录了)? ...

7得票3回答
服务容器、控制反转和可释放对象

我有一个问题,我会标记这个问题为主观的,因为我认为它会演变成更多的讨论。我希望能得到一些好的想法或引发思考。对于这个冗长的问题我很抱歉,但你需要了解上下文。 问题基本上是: 如何处理与IoC容器相关的具体类型?具体来说,如果它们需要处理,谁负责处理它们,以及这些知识如何传播到调用代码? ...

12得票5回答
在C#中从流对象创建临时文件

给定一个包含 xlsx 文件的流对象,我想将其保存为临时文件,并在不再使用该文件时删除它。 我考虑创建一个实现了 IDisposable 接口的类,并将其与 using 代码块一起使用,以便在最后删除临时文件。 有没有什么方法可以将流保存到临时文件中并在使用结束时将其删除? 谢谢