我正在开发一个 Windows 窗体应用程序,它连接到一个硬件,获取大量数据(~1 GSample/sec),处理它,并在单击按钮时将其吐出到屏幕上。我现在正在尝试在一个可以随时启动/停止的循环中自动化该过程,以便我可以在调整采集硬件的输入的同时对其进行监控。我认为很明显我需要在一个单独的线程上执行此操作,但我有一段时间尝试在 c++/cli 中执行此操作 - 我找到了许多使用 MFC 的好示例,这些示例不受支持表达。
具体来说:我的任务是按下在 Form1.h 中处理的按钮,在我的主文件 Acquisition.cpp 中调用一个函数,其中包含以下代码(当前是无限循环)
void Form1::realTimeUpdate()
{
// live is a boolean variable set by a button on the form
while(live)
{
displayVariance(getVar(getQuadratures(100),nbrSamples));
}
}
我希望在单独的线程中执行此代码,以便主程序可以侦听用户请求以停止操作。在没有线程的情况下,我目前必须强制退出程序(或将其设置为运行固定次数)才能停止它。
有什么建议我可以如何在单独的线程上运行此代码吗?
我已经(不成功)尝试了一些事情:
修改此 Microsoft 示例中给出的示例。问题:需要/clr:oldSyntax选项,该选项与程序中的其他 1300 行代码不兼容。
尝试做我在 Java 中所做的事情(声明一个全局线程并从代码中的任何位置启动/停止它。问题:编译器不会让我声明一个全局 System::Threading.Thread
这个美丽的例子。问题:需要 MFC。
任何建议将不胜感激!