У меня есть программа, которая порождает поток, управляющий последовательной связью. Пока он ожидает ответа на последовательном порту, я блокирую поток с помощью 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();
}
Большое Вам спасибо