C#如何取消事件队列,就是一个事件未执行完时再次触发事件,后面的事件不进入队列
C#中事件是采用队列的形式,假设一个事件执行完成需要30ms,而30ms之内触发了两次该事件,那么后面一次事件就会进入队列等待前面一次执行完后再执行,如何取消这种机制?就...
C#中事件是采用队列的形式,假设一个事件执行完成需要30ms,而30ms之内触发了两次该事件,那么后面一次事件就会进入队列等待前面一次执行完后再执行,如何取消这种机制?就是前面事件未执行完时后面触发的事件一律丢弃
展开
1个回答
展开全部
想取消是不可能的了,这是 CLR 自己处理的而不是你写的。
但可以换种思路,题主的要求不就是同一个事件之间要互斥吗?可以设置一个 flag。事件进入方法后先判断该 flag 是否为 false,如果是则改为 true 并继续执行,否则跳出该方法。过程执行结束后再改回 false。
但可以换种思路,题主的要求不就是同一个事件之间要互斥吗?可以设置一个 flag。事件进入方法后先判断该 flag 是否为 false,如果是则改为 true 并继续执行,否则跳出该方法。过程执行结束后再改回 false。
追问
private void myCamera_NewImageDelegate(ref ImageInfo ImageInfo)
{
}
这是相机的SDK封装好的,订阅事件,下面就是事件了,相机收到外部的触发信号就会触发事件,外部触发过快的话事件堆积程序就卡死了,不知怎么解决
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询