私は次の機能を持っています。この関数は、デバイスからの設定の読み取りを開始します。最初にパラメーターを設定して、プログラムがデバイスから読み取っていることを認識し、読み取られている設定を設定し、最後にデバイスにコマンドを送信します。
デバイスの応答を読み取る関数は、パラメーターがそのように設定されているため、読み取るパラメーターをチェックする必要があることを認識しています。しかし、私は 1 つの問題に直面しています: ブール値を変更し、非常に小さな関数を実行してコマンドを送信するだけなので、以下の関数は、デバイスが応答を送信する前に終了します。
while 関数を間に配置してこれを修正しようとしました。これで最初のブロックは解決しましたが、他のブロックでそれを試みると、アプリケーション全体がクラッシュします。IsReadingSettingFromDevice
私の質問は、パラメーターが false に戻されるまで、この関数を一時停止するにはどうすればよいですか?
private void ReadSettings()
{
ProgramParameters.C.IsReadingSettingFromDevice = true;
ProgramParameters.C.SettingToReadFromDevice = Data.CMD_type;
SerialCom.SC.SendCommand(Data.CMD_type);
Debug.WriteLine("DEBUG INFO: SendCommand: " + Data.CMD_type);
while (ProgramParameters.C.IsReadingSettingFromDevice) ;
ProgramParameters.C.IsReadingSettingFromDevice = true;
ProgramParameters.C.SettingToReadFromDevice = Data.CMD_IPsettings;
SerialCom.SC.SendCommand(Data.CMD_IPsettings);
Debug.WriteLine("DEBUG INFO: SendCommand: " + Data.CMD_IPsettings);
//while (ProgramParameters.C.IsReadingSettingFromDevice) ;
ProgramParameters.C.IsReadingSettingFromDevice = true;
ProgramParameters.C.SettingToReadFromDevice = Data.CMD_version;
SerialCom.SC.SendCommand(Data.CMD_version);
Debug.WriteLine("DEBUG INFO: SendCommand: " + Data.CMD_version);
//while (ProgramParameters.C.IsReadingSettingFromDevice) ;
ProgramParameters.C.IsReadingSettingFromDevice = true;
ProgramParameters.C.SettingToReadFromDevice = Data.CMD_channels;
SerialCom.SC.SendCommand(Data.CMD_channels);
Debug.WriteLine("DEBUG INFO: SendCommand: " + Data.CMD_channels);
}
編集: クラス ProgramParameters は、私が自分で作成したクラスです。プログラムの現在の状態のグローバルパラメーターに関する情報を保持します。