2

如果我有以下代码:

public class Foo
{
    public void Bar()
    {
        var someTypeWithAnEvent = new SomeTypeWithAnEvent();        

        using (var signal = new ManualResetEvent(false))
        {
            someTypeWithAnEvent.Begun += (sender, e) => signal.Set();
            someTypeWithAnEvent.Begin();
            signal.WaitOne();
        }
    }
}

FxCop 似乎抛出了CA1001错误:

CA1001:Microsoft.Design:在“Foo”上实现 IDisposable,因为它创建了以下 IDisposable 类型的成员:“ManualResetEvent”。

在这种情况下,这似乎无效,因为我正在处理ManualResetEvent整个using块。

我在这里遗漏了什么还是规则中有错误?

4

4 回答 4

4

似乎确实是一个错误的警告。您使用的是哪个版本的 FxCop?据报道这是一个错误,但现在可能会解决。

于 2010-03-17T13:11:41.110 回答
3

让我猜猜:您正在访问 lambda 表达式中的信号,而错误消息中的“..”是编译器生成的类。在这种情况下,抑制消息是安全的。

于 2010-03-17T13:10:39.257 回答
1

根据这篇文章,这是一个已知的错误,因此应该保存以忽略该错误。

于 2010-03-17T13:11:42.997 回答
0

我同意。这是没有意义的 - 信号不会在未经处理的情况下存活下来。在我看来,解析器中的错误(对于条件)。我会记录它并将 pgragma 放入文件中以支持它。

于 2010-03-17T13:11:33.810 回答