我正在尝试设置另一个线程,该线程当前检查被引用对象的状态。
主线程是运行程序并处理串行连接状态的线程。
第二个线程需要访问连接状态才能继续从缓冲区发送和接收命令。
这可能吗?
我正在尝试设置另一个线程,该线程当前检查被引用对象的状态。
主线程是运行程序并处理串行连接状态的线程。
第二个线程需要访问连接状态才能继续从缓冲区发送和接收命令。
这可能吗?
当然。控制串行设备的线程需要提供一个线程安全的只读属性,该属性会记住它读取的最后一个状态。另一个线程可以随时读取该属性。
这是一个简单的解决方案:
string lastReadState = "";
object StateLock = new Object();
string State { get { lock(StateLock) { return lastReadState; } } }
// Main thread working away...
lock (StateLock) { lastReadState = ReadCurrentState(); }
// Other thread working away...
string state = State;
编辑(看到评论后)
SomeStateClass lastReadState = new StateClass();
object StateLock = new Object();
SomeStateClass State { get { lock(StateLock) { return lastReadState; } } }
// Main thread figures out the new state information at some point...
lock (StateLock) { lastReadState = new StateClass { Prop1 = whatever, ... }; }
// Other thread uses the state
var relevantInfo = State.Prop1;