我有一个在类中运行的计时器。我有两个按钮。 按钮1是启动计时器(在班级内) 按钮2用于强制停止计时器。 单击按钮1并执行计算时,计时器运行平稳。 但是当我按下按钮2时,计时器没有强制停止并抛出异常
未处理的类型' System.NullReferenceException'发生了#34;。
注意:如果我使用public static System.Timers.Timer theTimer1;然后可以用按钮2停止计时器。但是我不想使用静态,如果条件为真,那么它会自动停止但停止方法不能使用按钮。 如何使用按钮停止此计时器。 感谢。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TextCheck.m" ofType:@"m"];
答案 0 :(得分:2)
在Test
的构造函数中初始化计时器:
class Test
{
public Test()
{
theTimer1 = new System.Timers.Timer(10000);
}
只有在调用SerialPortEvent()
时,您的代码才会初始化计时器。
在您按下Start
按钮之前不会调用此方法,因此当您按Stop
而不先按Start
时,会出现空参考例外。
此外,您的stop()
函数会释放计时器。当您尝试在处理后停止计时器时,这可能是一个问题。
答案 1 :(得分:0)
你很有可能试图从不同的线程中停止你的计时器
因此,假设您在线程1中,并且您创建了对在线程2中实例化的计时器的引用。在一段时间后线程1结束并且您在线程3中,您尝试从线程3中获取该引用线程1.这就是你得到空引用异常的原因。
您应该使用静态,易失性或任务和任务取消令牌。
public volatile System.Timers.Timer theTimer1;