CA1001:在 ViewModel 中实施 Idisposable
CA1001 : Implement Idisposable in a ViewModel
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (processFileBackgroundWorker != null)
{
processFileBackgroundWorker.Dispose();
processFileBackgroundWorker = null;
}
}
}
我在我的视图模型中使用后台工作程序,我在 fxcop 中收到 CA1001 错误。我明白我需要继承Idisposable,并实现上面的接口。我只是好奇它是如何工作的,如果只是在我的 class 中任意添加这段代码就可以完成任何事情。我尝试设置一个断点,但此代码从未被调用或使用过,我将不胜感激有关如何正确实施它的任何指导。
如果 fxcop 把勺子砸在托盘上并要求 IDisposable
,并且摆脱 fxcop 不是一个选择,我猜你要纳税了。
在这种特殊情况下有点傻,因为 IDisposable
用于在对象超出 using
块或 try
/[ 的范围时处理非托管资源=14=],并且视图模型不会以这种方式超出范围。所以在正常的视图模型使用中,没有调用 Dispose()
。
但您确实经常在程序退出前丢弃它们(在 程序退出时,没有人关心是否有任何东西被处理掉——它们都直接进入垃圾箱)。我会实现 IDisposable
,让它像你所做的那样正确处理 BackgroundWorker
,如果你的代码中有一点丢弃了该视图模型的实例,我会明确调用 Dispose()
就可以了。你不需要 IDisposable
,但它是无害的。
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (processFileBackgroundWorker != null)
{
processFileBackgroundWorker.Dispose();
processFileBackgroundWorker = null;
}
}
}
我在我的视图模型中使用后台工作程序,我在 fxcop 中收到 CA1001 错误。我明白我需要继承Idisposable,并实现上面的接口。我只是好奇它是如何工作的,如果只是在我的 class 中任意添加这段代码就可以完成任何事情。我尝试设置一个断点,但此代码从未被调用或使用过,我将不胜感激有关如何正确实施它的任何指导。
如果 fxcop 把勺子砸在托盘上并要求 IDisposable
,并且摆脱 fxcop 不是一个选择,我猜你要纳税了。
在这种特殊情况下有点傻,因为 IDisposable
用于在对象超出 using
块或 try
/[ 的范围时处理非托管资源=14=],并且视图模型不会以这种方式超出范围。所以在正常的视图模型使用中,没有调用 Dispose()
。
但您确实经常在程序退出前丢弃它们(在 程序退出时,没有人关心是否有任何东西被处理掉——它们都直接进入垃圾箱)。我会实现 IDisposable
,让它像你所做的那样正确处理 BackgroundWorker
,如果你的代码中有一点丢弃了该视图模型的实例,我会明确调用 Dispose()
就可以了。你不需要 IDisposable
,但它是无害的。