0
次のメソッド呼び出しが:矛盾した結果
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());
}
}
メソッド呼び出しがアプリケーション全体で一貫して機能するように、変更が必要なものについて私を適切な方向に向かわせてくれますか?
あなたのコードからはわかりません。おそらく、あなたはマルチスレッドの問題があります。 '_deviceSocket'が' null'に設定されているかどうかを確認してください。多分、あなたをどこかに連れて行くでしょう。 –
ダニエル - それはスレッドの問題であることが判明しました。スレッディングについてもっと読んだ後、私は匿名メソッドについて学びました。クラスに次のコードを追加した後: public delegate void DelegateClass(string Zone); 公共DelegateClass Z630_Power =デリゲート(文字列ゾーン) {Instance.SendIR( "sendir、" +ゾーン+」、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); }; 次の呼び出しでメソッドを実装できました。 GlobalCacheAdaptor.Instance.Z630_Power(activeRoom [3]);ありがとう。 – Bill