我使用SerialPort
并且必须对其状态作出反应(有端口数据读取的自定义指示符)。
我创造了这种结构:
this.connectionWatcher = new Task(async () =>
{
while (!this.cancelReceive.IsCancellationRequested)
{
if ((this.port == null || !this.port.IsOpen) && this.machineState.IsConnected)
this.machineState.IsConnected = false;
if (this.port != null && this.port.IsOpen && !this.machineState.IsConnected)
this.machineState.IsConnected = true;
await Task.Delay(1000);
}
}, this.cancelReceive.Token);
machineState.IsConnected
是property
的{{1}},用于指标。
我有两个问题(相反,两者都可以同时解决,imho):
bool
未停止; Task
不是最佳做法,对CPU有很大影响。