小编fol*_*rem的帖子

阻塞的线程会引发事件吗?

我有一个程序可以生成控制串行通信的线程。在等待串行端口响应的同时,我使用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)

非常感谢你

c# events multithreading autoresetevent

1
推荐指数
1
解决办法
75
查看次数

标签 统计

autoresetevent ×1

c# ×1

events ×1

multithreading ×1