Как решить System.IO.IOException «Операция ввода-вывода была прервана из-за выхода из потока или запроса приложения». в SerialPort - PullRequest
0 голосов
/ 20 февраля 2020

Иногда появляется сообщение «System.IO.IOException: операция ввода-вывода была прервана из-за выхода из потока или запроса приложения». когда я пишу в SerialPort. Изучив проблему, я увидел, что сообщение было отправлено дважды, хотя я ожидаю завершения отправки и ответа

public List<string> Write(CommandBase command, TimeSpan readTimeout)
{
    lock (_sync)
    {

        var data = command.Build();

        _responses.Clear();
        _port.Write(data, 0, data.Length);

        // here I waiting for response (_port.DataReceived += PortOnDataReceived;)
        if (!_eventHandleResetEvent.WaitOne(readTimeout))
        {
            throw new ReadResponseTimeoutException(command, readTimeout);
        }


        _port.DiscardInBuffer();
        _port.DiscardOutBuffer();

        return new List<string>(_responses);

    }
}

Как мне решить эту проблему?

...