25得票1回答
Ninject在对象超出范围时不调用Dispose方法。

我很惊讶地发现,由Ninject创建的我的对象中,至少有一个在请求结束时没有被处理,尽管它已经被定义为InRequestScope。 这是我试图处理的对象: 接口:public interface IDataContext : IDisposable { MessengerEnti...

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

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

25得票7回答
如何处理从Dispose抛出的异常?

最近,我在研究一些关于对象未处理的棘手错误。 我在代码中发现了一些模式。有人报告说一些m_foo没有被处理,而似乎所有SomeClass的实例都已经被处理了。public class SomeClass: IDisposable { void Dispose() { ...

23得票6回答
如何正确处理WebResponse实例的释放?

通常,人们会编写类似这样的代码来使用 WebRequest 下载一些数据。using(WebResponse resp = request.GetResponse()) // WebRequest request... using(Stream str = resp.GetRespon...

23得票4回答
如何编写多个使用说明?

可能重复: 使用多个变量的using语句 我有多个一次性对象需要管理。CA2000规则要求我在退出作用域之前释放所有对象。如果可以使用using子句,我不想使用.Dispose()方法。在我的特定方法中,我应该编写许多嵌套的using语句:using (Person pers...

23得票3回答
确定托管资源与非托管资源

关于托管资源和非托管资源有许多问题。我理解了这两者的基本定义。然而,我很难知道何时资源或对象是托管的还是非托管的。 当我想到非托管资源时,我往往会想到不直接属于.NET的本机代码,例如pinvoke或封送资源。我通常会认为旨在与将使用硬件的某些东西进行接口的资源,例如文件句柄或网络连接也是非...

22得票6回答
我该如何继承IDisposable?

为保护当事人的隐私,类名已更改。 如果我有一个名为 ISomeInterface 的接口,并且我有两个继承该接口的类,FirstClass 和 SecondClass。其中 FirstClass 使用必须被处理的资源,而 SecondClass 则不需要。 问题是,我应该从哪里继承 IDi...

22得票6回答
IDisposable是用来做什么的?

如果.NET有垃圾回收,为什么你还需要显式调用IDisposable?

22得票4回答
Entity Framework 上下文生命周期相关问题

我对在ASP.NET MVC应用程序中使用Entity Framework上下文的期望生命周期有一些疑问。将上下文保持存活状态的时间尽可能缩短难道不是最好的吗? 考虑以下控制器操作:public ActionResult Index() { IEnumerable<MyTable...

21得票1回答
如何在托管C++中处理可处理对象(IDisposable)?

我正在尝试在托管的C++(.NET 2.0)中处理一个IDisposable对象(FileStream^ fs),但是收到错误消息:“Dispose' : is not a member of 'System::IO::FileStream”。它表示我应该调用析构函数。那么调用析构函数会怎样?...