我在 C# 和 VB 中看到过这样的示例,但我确实受限于 C++,我试图将 20 个字符串传递给后台工作程序,以便它可以对它们执行任务。我已尝试传递 Windows 窗体对象,但无法在不导致编译器错误的情况下将其从 System::Object 转换回窗体。
我也试过通过 DoWork 方法传递一个包含字符串的对象,但这也不起作用。
任何帮助将不胜感激。谢谢你
最佳答案
对于大量的字符串(或者更一般地说,“任务”),您可以使用同步队列、无锁队列,或者作为最简单的解决方案,使用完成端口。完成端口的效率出奇地高,如果您要安排的任务不超过几万个,那么真的不值得考虑更复杂的解决方案。
对于只有 20 个任务,这通常是矫枉过正(除非每个任务运行很长时间),将所有内容放入一个对象并传递指向该对象的指针是最好的解决方案。否则,通信/同步开销会超过多线程的 yield 。
将指向结构的指针传递给工作线程在 C++ 中应该可以很好地工作(我一直在这样做)。到底是什么问题?
关于c++ - 如何在 C++ 中将多个参数传递给 BackgroundWorker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364595/