我知道你可以在第一次启动backgroundworker时通过RunWorkerAsync函数调用传递参数,但是你可以在数据已经启动后传递它吗?或者,我是否需要创建自己的并发形式来处理从其他线程传递给它的数据?有没有办法在启动后将数据发送到BackgroundWorker?
2
A
回答
3
您需要添加一些同步,并让后台工作人员从中读取数据。
您不能(轻松地)将数据发送给后台工作人员。只需要有一个工作人员可以查找数据的地方,并且只需添加数据即可处理。因为(至少)两个线程可能在同一时间访问数据,所以请确保在该点上进行同步。
2
在任务启动后,BackgroundWorker API内不支持传递额外数据的机制。
但是,工作程序只是在不同的线程上运行。您可以将数据传递到该线程,就像在两个任意线程之间传递数据一样。一对夫妇对如何简单的例子......在静态变量
- 状态变化(可能是邪恶的)开始向下传递到工人日常的对象
- 状态改变(还是有点邪如果控制不当)
您应该仔细考虑这些方法的同步影响。
0
我更喜欢使用静态队列来定期检查新消息的后台线程。这允许后台线程按照自己的步调工作。您可以使用回调方法发回主线程。就像里德所说的,使用同步,比如一个静态对象来锁定。
相关问题
- 1. 有没有办法将数据发送到推送器channel_auth_endpoint?
- 2. 有没有办法将thymeleaf的数据发送到角度?
- 3. 有没有办法将数据从InfluxDB发送到Kafka?
- 4. 有没有办法将实时数据发送到JBOSS
- 5. 有没有办法将数据从html标签发送到php?
- 6. 有没有办法让Excel VBA发送数据到套接字?
- 7. 有没有办法在没有UID的情况下将数据推送到Firebase
- 8. 有没有办法使用esky发送发布数据?
- 9. 有没有办法将SQL数据发送到Azure中的App Insights?
- 10. 有没有办法将我最后一次推送到Git?
- 11. 有没有办法将厨师退出代码发送到shell
- 12. 有没有办法使用XMLHttpRequest()将json发送到远程cfc?
- 13. 有没有办法将变量发送到JavaScript文件?
- 14. 有没有办法将html id属性发送给函数?
- 15. 有没有办法发送gulp.src(某些数据)而不是glob?
- 16. 有没有办法用$('#id')发送额外的数据。uploadifive('upload');
- 17. 有没有办法使用Twisted重新发送UDP数据包?
- 18. 有没有办法在ajax响应后启动脚本?
- 19. 水貂和Behat:有没有办法在后台启动硒(Chrome)?
- 20. 有没有办法从maven启动EAR?
- 21. 有没有办法将参数转发到内部constexpr函数?
- 22. 有没有办法将TCP数据包作为其他应用程序发送?
- 23. Node.js有没有办法在JSON响应中发送数组?
- 24. 有没有办法启动发送直接消息的Twitter对话框?
- 25. 有没有办法将推送通知从Web门户发送到Google Cloud Messaging?
- 26. 有没有办法发送具有整数和字符串的表单数据?
- 27. 有没有办法每周一自动发送Google表单?
- 28. 有没有办法将密钥发送给Windowmanager
- 29. 硒-RC:有没有办法将请求发送
- 30. 有没有办法将FCM通知发送到Firebase数据库中的用户数据输入?
这就是我认为的,那么Skeets先生有没有更好的生产者/消费者的例子? http://www.yoda.arachsys.com/csharp/threads/deadlocks.shtml – SwDevMan81 2009-09-10 11:38:04
他是一个非常干净,狭隘的选择。在某些情况下,可能会使用ReaderWriterLock,这可能会更好(但只在某些情况下),因为它不会阻止读者。请参阅:http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx – 2009-09-10 11:40:40
太好了,我会检查一下,看看我能否使用它。谢谢 – SwDevMan81 2009-09-10 11:43:53