UseObjectDisposedExceptionRule:IDisposable类型的方法不会抛出System.ObjectDisposedException

时间:2013-10-07 14:05:20

标签: c# properties

我在MVP模型中有一个页面。我的视图界面中的属性是在.aspx.cs文件后面的代码中实现的。在代码隐藏中实现的大多数属性中,我的代码监视工具显示如下警告:

UseObjectDisposedExceptionRule:IDisposable类型的方法不会抛出System.ObjectDisposedException。

异常显示在setter中,即

    public bool IsOkToPtoceed
    {
    get
    {
     return _isOkToProceed;
    }
    set
    {
    /// warning is displayed in this line
    _isOkToProceed=value;
    }
    }

我该如何处理警告?是否只是在设置值时使用try catch块?

2 个答案:

答案 0 :(得分:1)

这是防止使用后处理的指南。

set
{
   /// warning is displayed in this line
   if (this.IsDisposed)
       throw new ObjectDisposedException("<classname>");

   _isOkToProceed=value;
}

答案 1 :(得分:1)

Your tool tells you what you should do:

  

如果对象已被处理,则抛出ObjectDisposedException。

public void Dispose ()
{
    if (!disposed) {
        // Implement the details of your dispose method here.
        disposed = true;
    }
}

private bool disposed;

public bool IsOkToPtoceed
{
    get
    {
        return _isOkToProceed;
    }
    set
    {
        if (disposed) {
            throw new ObjectDisposedException (GetType ().Name);
        }
        _isOkToProceed=value;
    }
}