List :自定义对象如何将自己从列表中删除?

| 我创建了一个类,该类通过一个elapse事件实现一个“ 0”。
private void ElapseEvent(object source, ElapsedEventArgs e){
//read from serial port device
}
在主程序中,我有一个
private List<MyTimerClass> _timers
。 我动态启动计时器并将其添加到计时器列表中。
 var timer1= new MyTimerClass();
 timer1.Execute(\"Device A\");
_timers.Add(timer1);

 var timer2= new MyTimerClass();
 timer2.Execute(\"Device B\");
_timers.Add(timer2);
ElapseEvent
遇到错误并且串行端口已断开连接时,我想从列表中删除计时器。我该怎么做?     
已邀请:
        您可以在包含计时器的类上添加OnError方法。为了让父类知道发生错误。类似于以下内容: 在MyTimerClass
public MyTimerClass(Action<MyTimerClass, Exception> onError)
{
    this.onError = onError;
}

private void ElapseEvent(object source, ElapsedEventArgs e){
try{
//read from serial port device
}
catch(Exception ex) // It would be better if you know the exceptions you want to handle
{
  if(this.onError != null)
  {
   this.onError(this, ex);
  }
}
}
在家长课上:
var timer1= new MyTimerClass(this.OnTimerError);
 timer1.Execute(\"Device A\");
_timers.Add(timer1);

 var timer2= new MyTimerClass(this.OnTimerError);
 timer2.Execute(\"Device B\");
_timers.Add(timer2);



public void OnTimerError(MyTimerClass timer, Exception error)
{
 //Log the exception
  _timers.Remove(timer);
}
    
        如果_timers是静态变量,则在同一类中创建一个静态事件处理程序。当在计时器的“ 4”中引发错误时,请参照自身调用事件处理程序,并让静态事件处理程序从列表中删除错误的计时器。     
        观察者模式。 .NET为此提供了本机支持。     
        您应该签出命令模式;听起来很适合您。     

要回复问题请先登录注册