25得票2回答
在ASP.NET实现文件下载时,如何处理文件流的释放?

我有一个类DocumentGenerator,它包装了一个MemoryStream。 因此,我在该类上实现了IDisposable。 然而,我看不到如何/在哪里可以释放它。 这是我的当前代码,在MVC中执行文件下载:using (DocumentGenerator dg = Documen...

8得票8回答
IEnumerable<IDisposable>:谁在何时处理它们 -- 我理解得对吗?

以下是一个假设的场景。 我有非常多的用户名(比如说10,000,000,000,000,000,000,000。是的,我们已经进入了星际时代 :))。每个用户都有自己的数据库。我需要遍历用户列表,并对每个数据库执行一些SQL语句,并打印结果。 由于我学习了函数式编程的好处,并且因为我处理了...

18得票2回答
当在'using'块内调用'return'时会发生什么?

如果我有一个像这样的using块的方法... public IEnumerable&lt;Person&gt; GetPersons() { using (var context = new linqAssignmentsDataContext()) ...

7得票3回答
当一个IDisposable对象被传入父IDisposable对象时,会发生什么行为?

昨天,在我们的代码库上运行 Visual Studio 代码分析后,以下代码被标记为问题: using (var stringReader = new StringReader(someString)) { using (var reader = XmlReader.Create(s...

7得票4回答
C#应用程序会自动释放托管资源吗?

我完全清楚使用using语句是处理IDisposable的方式。请不要在评论中重复这个建议。 当C# .NET 4.5(或更高版本)应用程序关闭时,没有正确处理的IDisposable会发生什么情况? 我知道有些类有终结器来处理未托管的资源。 但是,假设我有一个控制台应用程序,其中包含一...

11得票4回答
在终结器中抛出异常以强制调用Dispose方法:

以下是我认为被推荐的经典IDisposable实现:~SomeClass() { Dispose(false); } public void Dispose() { GC.SuppressFinalize(this); Dispose(true); } protec...

8得票2回答
异步/等待和IDisposable接口

我有一个类,实现了IDisposable接口以处理私有变量_MailMessage。同样的类有一个异步方法,利用了私有的IDisposable变量,即async public Task&lt;bool&gt; Send。我的问题是:普通的IDisposable实现会在异步方法完成后处理私有变量...

62得票5回答
当将IDisposable对象传递到另一个对象中时,谁应该调用Dispose?

在将可处理对象传递给其他对象的方法或构造函数时,是否有关于谁应该调用Dispose()的指南或最佳实践呢? 以下是一些例子,说明我的意思。 将IDisposable对象传递给方法(方法是否应在完成后对其进行处理?):public void DoStuff(IDisposable dispo...

10得票3回答
将类型转换为IDisposable - 为什么?

看到这个。为什么要显式地将其转换为IDisposable?这只是一种简写,以确保在退出using块时调用IDisposable吗?using (proxy as IDisposable) { string s = proxy.Stuff() ...

17得票6回答
我需要在LINQ查询后强制执行Dispose吗?

我的数据库管理员说有太多连接处于打开状态,他认为是我的 .net 代码没有关闭这些连接。 我正在使用 LINQ 查询和 EF Code First。 示例方法: public List&lt;Stuff&gt; GetStuff() { var db = new DBCont...