关于事件在意料之外触发的问题
问题:
做了一个自定义调整的界面,使用的是silverlight,由于其中控件的事件触发时机是混在一起的(通过页面和代码修改值触发的事件是同一个),导致事件循环触发,程序卡死。
解决方法:
1.不用silverlight
2.使用“锁”的机制:代码修改可能触发事件的值时,将事件锁上
(其实就是写个变量,比如Bool类型的,默认设为false,在代码中修改相关的值之前设为true,在事件开始判断一下,被锁上了就return,结束方法,没锁上就继续走,修改值之后记得将锁放开。)
3.递归时注意锁的位置,慎用。