いくつかのハードウェアとの通信のためにクラス内の.net SerialPort
をプロパティとして使用しています。私がプログラムを閉じると、私は接続を閉じる前にstopコマンドを送る必要があります。クラスdeconstructorが起動されたときにSerialPortプロパティが閉じられる
私は、私が書いたクラスの私の解体者の中でこれをするのが最もエレガントな方法だと思ったが、私はSerialPort
がdecontrcutorが解雇された時に閉じられ、ここで
は、同じエラーが発生し、私が書いたテストクラスです:
public class SerialPortTestClass
{
private System.IO.Ports.SerialPort ComPort { get; set; }
public SerialPortTestClass()
{
ComPort = new System.IO.Ports.SerialPort
{
BaudRate = 38400,
StopBits = System.IO.Ports.StopBits.One,
NewLine = ((char)19).ToString(),
Parity = System.IO.Ports.Parity.None,
Handshake = System.IO.Ports.Handshake.None,
RtsEnable = false,
ReadBufferSize = 512,
ReadTimeout = 5000,
ReceivedBytesThreshold = 1
};
}
public void Connect(string port)
{
ComPort.PortName = port;
ComPort.Open();
}
public void Disconnect()
{
var bytes = new byte[] { 83, 80, 32, 115, 54, 19 };
ComPort.Write(bytes, 0, bytes.Length);
ComPort.Close();
}
~SerialPortTestClass()
{
if (ComPort.IsOpen)
Disconnect();
}
}
は誰SERIALPORTが閉じられた理由を考えて、どのようにこの動作を修正するにしていますか?
については これは、シリアルポートとは何の関係もありません。デストラクタはシャットダウン時に呼び出されないためです。それを解決するには、クラスをどのように実行するかを知る必要があります。コンソールアプリケーションですか?ウェブアプリケーション? – fhogberg
クラスはwpfデスクトップアプリケーションの一部です。 – dukemadcat