虽然以下方法调用:
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());
}
}
有人会引导我指出需要修改的正确方向,以便方法调用在整个应用程序中始终如一地工作吗?
答案 0 :(得分:0)
我的猜测是_deviceSocket
正在被(大概)其他NetworkStream
关闭? (System.Net.Sockets.NetworkStream是一个IDisposable类。)但是没有更多的代码(_deviceSocket的初始化以及它的其他用途)我无法确定。