【发布时间】:2014-10-10 14:08:41
【问题描述】:
我正在使用一个单独的类来实例化不同的条形码对象,具体取决于机器的类型,一旦读取条形码就会引发事件。
所以为了将它传输到表单,我还引发了一个我所有表单都监听的唯一事件“myEvent”,但在表单内部我必须使用 this.Invoke((Action) mymethod(argument));能够在用户界面更新组件,只要 myEvent 的处理程序在另一个不同于表单的线程上执行。
所以我有这个:
我的类 ->barcode.readed(..) 被触发,然后从它的处理程序,我引发 myEvent,在我的表单上捕获,从我的表单上的 myEvent 处理程序,我执行 this.Invoke…
我知道这是一个有点标准的过程,但我想摆脱那个 Invoke,而是直接调用 myMethod(argument);功能。
我认为这与使我的类线程安全有关,但我不知道如何在我的情况下实现它。
事实上,如果我在表单内部使用原始制造商的barcode.readed() 事件,它不需要调用调用,只要这是线程安全的,但我不知道如何模仿,而且我真的需要将所有不同的条形码处理程序包装在一个不同的项目中,以便我的表单只使用一个返回所需条形码的“myEvent”,因此,不重复代码。
提前致谢,
罗杰·特兰切斯
【问题讨论】:
标签: c# forms events thread-safety compact-framework