public class EmEventArgs : IDisposable
{
public Bitmap GrabImage
}
public void Dispose()
{
//调用带参数的Dispose方法,释放托管和非托管资源
Dispose(true);
//手动调用了Dispose释放资源,那么析构函数就是不必要的了,这里阻止GC调用析构函数
System.GC.SuppressFinalize(this);
}
//protected的Dispose方法,保证不会被外部调用。
//传入bool值disposing以确定是否释放托管资源
protected void Dispose(bool disposing)
{
if (disposing)
{
GrabImage.Dispose();
///TODO:在这里加入清理"托管资源"的代码,应该是xxx.Dispose();
}
///TODO:在这里加入清理"非托管资源"的代码
}
//供GC调用的析构函数
~EmEventArgs()
{
Dispose(false);//释放非托管资源
}
}
{
public Bitmap GrabImage
{
set;
}
public void Dispose()
{
//调用带参数的Dispose方法,释放托管和非托管资源
Dispose(true);
//手动调用了Dispose释放资源,那么析构函数就是不必要的了,这里阻止GC调用析构函数
System.GC.SuppressFinalize(this);
}
//protected的Dispose方法,保证不会被外部调用。
//传入bool值disposing以确定是否释放托管资源
protected void Dispose(bool disposing)
{
if (disposing)
{
GrabImage.Dispose();
///TODO:在这里加入清理"托管资源"的代码,应该是xxx.Dispose();
}
///TODO:在这里加入清理"非托管资源"的代码
}
//供GC调用的析构函数
~EmEventArgs()
{
Dispose(false);//释放非托管资源
}
}
本文介绍了一个C#中的事件参数类EmEventArgs,该类实现了IDisposable接口,通过Dispose方法来释放托管和非托管资源。文章详细展示了Dispose模式的具体实现方式,包括如何释放资源以及如何避免重复释放。

1733

被折叠的 条评论
为什么被折叠?



