0

我正在尝试设置另一个线程,该线程当前检查被引用对象的状态。

主线程是运行程序并处理串行连接状态的线程。

第二个线程需要访问连接状态才能继续从缓冲区发送和接收命令。

这可能吗?

4

1 回答 1

1

当然。控制串行设备的线程需要提供一个线程安全的只读属性,该属性会记住它读取的最后一个状态。另一个线程可以随时读取该属性。

这是一个简单的解决方案:

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;
于 2010-08-31T19:08:47.763 回答