Непоследовательные результаты от выполненного метода в пределах проблемы приложения - PullRequest
0 голосов
/ 25 июля 2011

Хотя следующий вызов метода:

GlobalCacheAdaptor.Instance.SendIR("sendir," + activeRoom[3] + ",1,40000,4,1,21,181,21,181,21,181,21,181,21,181,21,181,21,181,21,181,21,181,21,181,21,181,21,800" + Environment.NewLine);

отлично работает при вызове из одной части моего приложения на C #, к сожалению, тот же вызов метода завершается неудачно и возвращает исключение, утверждающее, что "socket (_deviceSocket") не может быть нулевым "при вызове из другой части моего приложения.

public void SendIR(string message)
{
  try
        {
            var stream = new NetworkStream(_deviceSocket);
            var reader = new StreamReader(stream);
            var writer = new StreamWriter(stream) {NewLine = "\r", AutoFlush = true};
            _deviceWriter = writer;
            _detectedRelayModule = -1;
            writer.WriteLine(message);
            var readerThread = new Thread(ReaderThreadProc) {IsBackground = true};
            readerThread.Start(reader);
        }
 catch (Exception e)
        {
            MessageBox.Show( e.GetBaseException().ToString());
        }
 }

Может ли кто-нибудь направить меня в правильном направлении относительно того, что необходимо изменить, чтобы вызов метода работал последовательно во всем приложении?

1 Ответ

0 голосов
/ 25 июля 2011

Полагаю, что _deviceSocket закрывается для вас (предположительно) другим NetworkStream?( System.Net.Sockets.NetworkStream является классом IDisposable.) Однако без дополнительного кода (инициализация _deviceSocket и его другое использование) я не могу быть уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...