使用visual studio express 2010 Forms Application的C++ MultiThreading

Ork*_*rko 5 multithreading c++-cli visual-studio-2010 visual-c++ visual-c++-2010

我正在开发一个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));  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

我希望在一个单独的线程中执行此代码,以便主程序可以侦听用户请求以停止操作.如果没有线程,我当前必须强制退出程序(或将其设置为运行固定次数)以阻止它.

有什么建议我可以在单独的线程上运行此代码吗?

我已经(不成功)尝试了一些事情:

  1. 修改此Microsoft示例中给出的示例.问题:需要/ clr:oldSyntax选项,它与程序中的其他1300行代码不兼容.

  2. 尝试做我在Java中做的事情(声明一个全局线程并从代码中的任何一点开始/停止它.问题:编译器不会让我声明一个全局的System :: Threading.Thread

  3. 这个美丽的例子.问题:需要MFC.

任何建议将不胜感激!

Ree*_*sey 1

您可以使用BackgroundWorker 或Thread 来处理这个问题。但是,您需要确保更新 UI 的工作部分被封送回 UI 线程。

这是有关 C++/CLI 中线程的教程