gpt4 book ai didi

multithreading - 带有 Visual Studio Express 2010 表单应用程序的 C++ 多线程

转载 作者:行者123 更新时间:2023-12-04 21:50:27 25 4
gpt4 key购买 nike

我正在开发一个 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));
}
}

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

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

我已经(失败)尝试了一些事情:
  • 修改 This Microsoft Example 中给出的示例.问题:需要/clr:oldSyntax 选项,该选项与程序中的其他 1300 行代码不兼容。
  • 尝试做我在 Java 中会做的事情(声明一个全局线程并从代码中的任何一点启动/停止它。问题:编译器不会让我声明一个全局 System::Threading.Thread
  • this美丽的例子。问题:需要 MFC。

  • 任何建议将不胜感激!

    最佳答案

    您可以使用 BackgroundWorker 或 Thread 来处理此问题。但是,您需要确保更新 UI 的工作部分被编码(marshal)回 UI 线程。

    这是一个 tutorial on threading in C++/CLI .

    关于multithreading - 带有 Visual Studio Express 2010 表单应用程序的 C++ 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671221/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com