如何使这个功能等待其他功能完成?

时间:2012-11-26 09:13:56

标签: c# timing

我有以下功能。此功能开始从设备读取设置。首先,我设置一个参数,以便我的程序知道它正在从设备读取,而不是设置正在读取的设置,最后我向设备发送命令。

读取设备响应的函数知道它应该检查要读取的参数,因为设置的参数是这样做的。但我面临一个问题:因为我只更改布尔值并执行一个非常小的函数来发送命令,所以下面的函数在设备发送任何响应之前完成。

我尝试通过放置功能来解决这个问题。这解决了它的第一个块,但如果我尝试与其他块,我的整个应用程序崩溃。我的问题是如何将此函数暂停,直到参数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只是我自己创建的一个类。它保留了有关程序当前状态的全局参数的一些信息。

1 个答案:

答案 0 :(得分:1)

在单独的线程中启动长时间运行的方法,例如使用任务并行库以简化 - 它在后台为您做了大量的管道工作。然后,您可以决定是要等待结果还是在应用程序中执行其他操作(可能至少要正确退出)。

请查看 here 以获取有关TPL的“入门”文章,或 here 以获取更一般的信息(以及更低级别的信息)级别)线程教程。

相关问题