【发布时间】:2015-12-07 11:11:56
【问题描述】:
多个(实际上是 19 个)后台工作人员可以都使用同一个 DoWork 事件吗?这有问题吗?
var bw1 = new BackgroundWorker();
bw1.DoWork += DoingStuff_DoWork;
var bw2 = new BackgroundWorker();
bw2.DoWork += DoingStuff_DoWork;
var bw2 = new BackgroundWorker();
bw3.DoWork += DoingStuff_DoWork;
我的下一个问题是,如果我在每个后台工作人员上调用 RunWorkerAsync,它们会同时启动吗?
bw1.RunWorkerAsync();
bw2.RunWorkerAsync();
bw3.RunWorkerAsync();
我在使用机器视觉应用程序时遇到了一些问题,这让我抓狂。
谢谢
【问题讨论】:
-
如果 bw2 和 bw3 的 DoWork 为空,为什么还需要它们?你没有注册工作让他们执行......这一切都在 bw1 中。顺便说一句,var bw2 -> var bw3 上的小错字。
-
开枪,你是对的。那是一个错字。它应该是 bw1.DoWork bw2.DoWork 等等......我的错误对不起
-
这完全取决于
DoingStuff_DoWork的内容...取决于里面的内容会告诉你是否可以让多个线程同时执行该代码。 -
我想知道我是否需要直接开始使用线程来获得我想要的结果。我只是喜欢使用 backgroundworker 提供的一点额外抽象。
标签: c# multithreading winforms .net-3.5 backgroundworker