我正在模仿.NET的会话,但有一些细微的差别(我的类只有预定义的字段 - 字符串或整数......)。
我已阅读MSDN和一些关于实施IDisposable的SO帖子,但看起来太多了。
我的计时器的Elapsed事件的事件处理程序调用一个静态方法,该方法应该处理发送给它的对象。
像这样:
public APISession()
{
timer.Elapsed +=new ElapsedEventHandler(disposeSession);
timer.Start();
}
private static void disposeSession(object obj,ElapsedEventArgs elapsedEventArgs)
{
//Should dispose APISession here (not obj - which is the timer,
//but rather -this)
}
public void Dispose()
{
throw new NotImplementedException();
}
已添加:这是APISession的声明:
class APISession:IDisposable
有人可以告诉我如何处理当前的APISession对象吗?
谢谢。
答案 0 :(得分:2)
如果只使用disposeSession方法中的对象,则必须在那里处理它。只应通过实现IDisposable来处理类变量。
在disposeSession方法结束时,如果它实现了IDisposable,则添加以下代码来处理它。
if(toDispose is IDisposable)
(toDispose as IDisposable).Dispose();
或者您可以像这样写
IDisposable disposable = toDispose as IDisposable;
if( disposable != null )
disposable.Dispose();
修改强> 添加了由注释更正的强制转换,并使用as添加了版本并检查了null