当忘记处理IDisposable对象时,Visual Studio可以警告我吗?

时间:2009-07-06 19:05:00

标签: visual-studio-2008 idisposable compiler-warnings

当我忘记处理实现IDisposable的对象时,是否可以将Visual Studio 2008配置为发出警告?

4 个答案:

答案 0 :(得分:6)

Visual Studio本身没有此功能,但使用CodeRush,您可以设置时间警告和重构,以便在需要时使用块进行插入。

答案 1 :(得分:2)

如果您打开FxCop设计规则,它将告诉您何时不实施IDisposable并且您有成员实现IDisposable,如下所示:

class Program
{
    private DataTable NotDisposed;

    public Program()
    {
        NotDisposed = new DataTable();
    }
    static void Main()
    {
    }
}

答案 2 :(得分:1)

我不认为它可以在编译时完成。

然而,它可以在运行时完成 我创建了一个抽象类'Disposable'(它实现了IDisposable,并实现了Disposable模式)。 在终结器中,我在调用终结器时发出Assert,并且该对象尚未处理。

我的基础是Ian Griffiths的一篇文章:

http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking

答案 3 :(得分:0)

我不确定您是使用C#还是VB,但在C#中,处理IDisposable类型对象的“最佳实践”方法是将代码放在使用块中。

“using语句允许程序员指定何时使用资源的对象应该释放它们。提供给using语句的对象必须实现IDisposable接口。该接口提供Dispose方法,该方法应该释放对象的资源。” - MSDN Link

HTH,

-Dan