我有一个程序可以生成控制串行通信的线程。在等待串行端口响应的同时,我使用AutoResetEvent阻止线程。
接收到数据后,由于该线程被阻止,该线程将无法执行该事件吗?
为了说明这一点,我在下面有一个简单的代码版本。此代码会导致死锁,还是事件可以在阻塞的线程中运行,从而最终唤醒自己?
AutoResetEvent rxDataReady = new AutoResetEvent(false);
public void GetSomeDataFromSerialPort()
{
SerialPort sp = new SerialPort()
sp.Write(dataRequest)
rxDataReady.WaitOne();
// Process data
}
private void ReadDataEventHandler(object sender, SerialDataReceivedEventArgs e)
{
// Prepare data
rxDataReady.Set();
}
Run Code Online (Sandbox Code Playgroud)
非常感谢你