应用程序问题中执行方法的结果不一致

时间:2011-07-25 14:26:42

标签: c# multithreading sockets methods

虽然以下方法调用:

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)不能为null”。

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 :(得分:0)

我的猜测是_deviceSocket正在被(大概)其他NetworkStream关闭? (System.Net.Sockets.NetworkStream是一个IDisposable类。)但是没有更多的代码(_deviceSocket的初始化以及它的其他用途)我无法确定。