繁体   English   中英

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

[英]How to make this function wait for other function to finish?

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

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

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

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

在此处查看有关TPL的“入门”文章,或在此处获取更通用(且更底层)的线程教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM