У меня есть очень странная ошибка, о которой я очень мало знаю, поэтому, пожалуйста, потерпите меня.
У меня есть розетка, соединяющаяся с аппаратным обеспечением.Я отправляю синхронно, но получаю асинхронно.
Я отправляю данные по следующему коду:
_dicSockets[lclIPEndPoint].Send(lclBytesSent, lclBytesSent.Length, SocketFlags.None);
и получаю по следующему коду:
protected virtual void receiveCallback(IAsyncResult ar)
{
PFDoReceiveDataArgs receiveData = (PFDoReceiveDataArgs)ar.AsyncState;
Socket lclSocket = receiveData.MySocket;
etc...
Эта схема прекрасно работает, когда оборудование быстро реагирует, в течение10 секунд.Однако сумасшедшие проблемы возникают, когда аппаратному обеспечению требуется больше времени (около 5 минут) для ответа.В течение этого времени существует поток, который находится в цикле while, проверяя, получила ли команда ответ или нет.
Я знаю, что аппаратное обеспечение работает и работает в это время.Я отправляю команду, и через 5 минут приходит ответ.4 из 5 раз проблем нет, все работает как положено.Та же команда, та же часть оборудования, все то же самое ...
1 из 5 раз происходит системный сбой сети, когда теряется мое интернет-соединение!
Поскольку я понятия не имею, в чем может быть проблема, я буду ждать от вас некоторых идей и вставлять больше кода по мере необходимости.