2011-02-02 3 views
1

У меня очень странная ошибка, о которой я знаю очень мало, поэтому, пожалуйста, несите меня.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 раз, есть системная авария в сети, где мое интернет-соединение потеряно!

Поскольку я понятия не имею, что может быть проблемой, я буду ждать некоторых идей от вас и при необходимости вставить больше кода.

+0

С чем вы столкнулись? – RQDQ

+0

Под «общесистемной», вы имеете в виду, что все компьютеры в сети теряют соединение или только один компьютер, на котором запущен код? – Justin

+0

только компьютер с кодом. – sbenderli

ответ

1

Не может быть связано непосредственно с проблемой, но я также удалю экземпляр сокета, прежде чем элемент управления покинет контекст метода receiveCallback.

+0

В настоящее время я продолжаю использовать сокет в своей программе и удаляю его только после выхода из программы. не могли бы вы посоветовать это? – sbenderli

0

Когда вы сомневаетесь, обнюхайте сеть. У меня была проблема много лет назад, когда компьютер в сети передавал неверные пакеты и периодически снимал наш главный коммутатор Cisco. Тайна части оборудования, о котором вы говорите, может транслировать какой-то ужасный трафик 1 из 5 раз.

Я нашел проблему, обнюхивая сеть, когда дела шли неправильно, и она смогла сузить проблему.

+0

Я попробую ваше предложение, спасибо – sbenderli

Смежные вопросы