我知道你可以在第一次启动backgroundworker时通过RunWorkerAsync函数调用传递参数,但是你可以在它已经启动后传递它吗?或者我是否需要创建自己的并发形式来处理从不同的线程传递数据?
答案 0 :(得分:3)
您需要添加一些同步,并为后台工作者提供从中读取数据的位置。
您无法(轻松)向后台工作人员发送数据。只有工作人员可以查找数据的地方要容易得多,而且您只需添加数据即可处理。只需确保在该点上实现同步,因为(至少)两个线程可能同时访问数据。
答案 1 :(得分:2)
BackgroundWorker API中没有支持的机制在任务启动后传递其他数据。
然而,worker例程只是在不同的线程上运行。您可以将数据传递到该线程,就像在两个任意线程之间传递数据一样。关于如何......的几个简单例子。
您应该仔细考虑这些方法的同步影响。
答案 2 :(得分:0)
我更喜欢使用静态队列来定期检查新消息的后台线程。这允许后台线程按照自己的进度工作。您可以使用回调方法向主线程发送信号。和Reed说的一样,使用同步,例如静态对象来锁定。