我有以下功能。此功能开始从设备读取设置。首先我设置一个参数,以便我的程序知道它正在从设备读取,然后我设置正在读取的设置,最后我向设备发送命令。
读取设备响应的函数知道它应该检查要读取的参数,因为设置了这样做的参数。但我面临一个问题:因为我只更改布尔值并执行一个非常小的函数来发送命令,所以下面的函数在设备发送任何响应之前完成。
我尝试通过在两者之间放置 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 类只是我自己创建的一个类。它保留了有关程序当前状态的全局参数的一些信息。