コンピュータは物理COM1を介して測定装置に接続されています。私はシリアルポートを開いて、私が生きていることをデバイスに伝え、時にはデバイスがデータを送信するという単純なフォームを持っています。アプリケーションのクラッシュ(デバッグ中であっても)、約1分後開かれたSerialPortクラッシュC#アプリケーション
public void Read()
{
string message = _serialPort.ReadLine();
}
:(すべてのいくつかの分)
Thread _readThread = new Thread(Read);
SerialPort _serialPort = new SerialPort("COM1", 9600);
_serialPort.Parity = Parity.None;
_serialPort.DataBits = 8;
_serialPort.StopBits = StopBits.One;
_serialPort.Handshake = Handshake.None;
_serialPort.DtrEnable = true;
_serialPort.Open();
_readThread.Start();
_serialPort.Write("#listening");
読み取り機能(働き)。これはObjectDisposedExceptionを報告します(基底のストリーム?)。 SafeHandleが閉じられたことを示すメッセージが表示されます。スタックstraceのは以下の通りです:Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(SafeFileHandleのhFile、NativeOverlapped lpOverlapped、のInt32 & lpNumberOfBytesTransferred、ブールBWAIT)System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent() で での
System.Threading.ThreadHelper.ThreadStart_Context(状態オブジェクト) System.Threading.ThreadHelper.ThreadStartでSystem.Threading.ExecutionContext.Run(のExecutionContextのExecutionContext、ContextCallbackコールバック、オブジェクトの状態) (AT)*
任意のアイデア?この問題は広く報告されていますが、通常、PCから物理的に切り離されたデバイスが関与しています。
私はSerialPortクラスがMonoにいくつかの問題があることを知っています。 MonoまたはMS .NETを使用していますか? – Skurmedel
MS .NET Framework 3.5 SP1 –
おそらく解決策ではありませんが、[開く前に書き込み]を呼び出している可能性があります。 – Skurmedel