处理不被召唤

mvc*_*bie 2 .net c# idisposable

我在这里看到了一些关于如何在超出范围时处理对象的方法的帖子,但我尝试过的任何东西似乎都没有用.

我有一个我创建的loadingscreen类,所以我在一个表单的xxx_load函数中声明了该对象.我希望对象在超出范围时自动处理,因此隐藏加载屏幕将自动处理.

这是我的装载课程

public class Loader : IDisposable
{
    public Loader()
    {
        Form.Loadscreen();
    }

    public void Dispose()
    {
        Dispose(true);
    }

    protected virtual void Dispose(bool disposing)
    {
        Form.UnloadScreen();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我在代码中使用它的方法.

using (Loader loader = new Loader())
{
    //... do some loading processing

    loader.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

即使我可以验证正在调用loader.Dispose(),仍然有时候没有处理对象.

有什么建议?

Jon*_*Jon 5

首先,你不需要loader.Dispose()明确调用:这是一个using块(它Dispose自动调用)背后的全部要点.

第二,你是什么意思"对象没有被处置",因为Dispose被调用(并且不可能不被调用; using确保它).