C# 在C中使用Dispose()时出错的原因#
我正试图在C# 在C中使用Dispose()时出错的原因#,c#,dispose,C#,Dispose,我正试图在c#中处理该对象。但是当我使用Dispose()方法时,我得到了一个错误。我在下面提到了我的代码 试用代码: public class ParentModel : ParentModelBase, IDisposable { protected override void OnDispose() { createdObject.PageMaximizedViewModel = null; createdOb
c#
中处理该对象。但是当我使用Dispose()
方法时,我得到了一个错误。我在下面提到了我的代码
试用代码:
public class ParentModel : ParentModelBase, IDisposable
{
protected override void OnDispose()
{
createdObject.PageMaximizedViewModel = null;
createdObject = null;
createdObject.Dispose();
base.OnDispose();
}
}
错误:
“ParentCreatedClass”不包含“Dispose”的定义,并且找不到接受“ParentCreatedClass”类型的第一个参数的可访问扩展方法“Dispose”(是否缺少using指令或程序集引用?)
无法解析符号“Dispose”
我在这几个小时里苦苦挣扎。如何解决此问题?
ParentCreatedClass
没有公共的Dispose()
方法-不能调用不存在的方法
显然,ParentCreatedClass
要么没有实现IDisposable
接口,要么显式实现,这意味着您必须首先将其强制转换为IDisposable
,然后才能对其调用Dispose()
,因此请尝试以下操作:
protected override void OnDispose()
{
createdObject.PageMaximizedViewModel = null;
((IDisposable)createdObject).Dispose();
base.OnDispose();
}
此外,即使此代码已经编译,在将
null
分配给引用后调用.Dispose()
(或任何其他方法)也会导致NullReferenceException
-删除createdObject=null代码>代码中的行。它没用。ParentCreatedClass
应该实现IDisposable,这样您就可以调用createdObject.Dispose()代码>
有关如何正确实施它,请参见此
类似地,ParentModel
类应该按照链接中的描述正确地实现IDisposable
ParentModel
应具有public void Dispose(),在调用createdObject.Dispose()
之前,在OnDispose
方法中设置createdObject=null
。因此,即使您修复了上述编译时错误,您也需要解决这个潜在的运行时问题—我现在遇到这个错误<代码>此类型有一个已释放但仍未GCed的实例。调查下面的实例以了解更多信息。
如何克服此问题。