c++ - 如何在 C++ 中将多个参数传递给 BackgroundWorker

标签 c++ windows visual-studio-2008 backgroundworker

我在 C# 和 VB 中看到过这样的示例,但我确实受限于 C++,我试图将 20 个字符串传递给后台工作程序,以便它可以对它们执行任务。我已尝试传递 Windows 窗体对象,但无法在不导致编译器错误的情况下将其从 System::Object 转换回窗体。

我也试过通过 DoWork 方法传递一个包含字符串的对象,但这也不起作用。

任何帮助将不胜感激。谢谢你

最佳答案

对于大量的字符串(或者更一般地说,“任务”),您可以使用同步队列、无锁队列,或者作为最简单的解决方案,使用完成端口。完成端口的效率出奇地高,如果您要安排的任务不超过几万个,那么真的不值得考虑更复杂的解决方案。

对于只有 20 个任务,这通常是矫枉过正(除非每个任务运行很长时间),将所有内容放入一个对象并传递指向该对象的指针是最好的解决方案。否则,通信/同步开销会超过多线程的 yield 。

将指向结构的指针传递给工作线程在 C++ 中应该可以很好地工作(我一直在这样做)。到底是什么问题?

关于c++ - 如何在 C++ 中将多个参数传递给 BackgroundWorker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364595/

相关文章:

visual-studio-2008 - 如何从QTableWidget获取数据?

java - 如何连接到 java 中的 Binder C++ 服务?

c++ - 通过 Windows 终端访问 C++ ASCII 代码

java - Android 扫雷算法

c++ - 在没有可再发行运行时的情况下运行 C++ 二进制文件(Server 2k3、XP SP3)

c# - 如何在 VS.NET winform 上启用设计标尺?

visual-studio-2008 - Ant 分析器 : Change the default browser?

c++ - 在 Qt 5.5 中集成(任何) map 框架

c++ - 标识符在 ATL\WTL 应用程序中未定义

c++ - 在 VC2010 中初始化 boost::random::discrete_distribution