我在DataReceived
的{{1}}事件中添加了一个回调。此回调访问某些类的属性。那么,这些属性必须声明为SerialPort
吗?换句话说,主线程可能在回调写入时访问属性吗?
这里我举了一个例子:
synchronized
答案 0 :(得分:0)
这是可能的,但我不知道是否真的发生了,因为这里看不到主线程的代码。
如果两个线程访问Prop,则必须以某种形式同步它。在此演示代码中,[MethodImpl(MethodImplOptions.Synchronized)]
就足够了。但通常你想要保护更多的状态而不仅仅是一个值。在这种情况下,您可能需要使用lock
手动锁定。
[MethodImpl(MethodImplOptions.Synchronized)]
无论如何都是代码味道。我相信它只适用于Java兼容性。 15年前,微软认为人们可能希望从Java迁移到.NET。