У меня очень странная ошибка, о которой я знаю очень мало, поэтому, пожалуйста, несите меня.C# асинхронный прием вызывает общесистемный сетевой сбой!
У меня есть розетка, соединяющая кусок оборудования. Я отправляю синхронно, но получаю асинхронно.
я отправить данные с помощью следующего кода:
_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 раз, есть системная авария в сети, где мое интернет-соединение потеряно!
Поскольку я понятия не имею, что может быть проблемой, я буду ждать некоторых идей от вас и при необходимости вставить больше кода.
С чем вы столкнулись? – RQDQ
Под «общесистемной», вы имеете в виду, что все компьютеры в сети теряют соединение или только один компьютер, на котором запущен код? – Justin
только компьютер с кодом. – sbenderli