【发布时间】:2013-08-19 19:18:55
【问题描述】:
有人可以看看并告诉我我的代码有什么问题吗? 我正在“即时”创建 2 个 BackgroundWorkers 并尝试同时启动它们。 类 Listen 和 Scan 背后的代码在单独执行时运行良好,但是当尝试以下述方式执行它们时,由于某种原因,它们总是一个接一个地启动。
private void btn_Start_BACKWorkers_Click(object sender, RoutedEventArgs e)
{
string one = tbx_id1.Text;
string second = tbx_id2.Text;
string Status = "";
var bw1 = new BackgroundWorker();
bw1.DoWork += delegate
{
string SelectedNumber = "0";
Listen myListen = new Listen(SelectedNumber );
TOTALlist = myListen.Main();
lbox_TOTAL.ItemsSource = addIPlist;
};
var bw2 = new BackgroundWorker();
bw2.DoWork += delegate
{
Send newScan = new Send(one , second);
string Status = newScan.hey();
FinalStatus = Status;
lbl_SendStatus.Content = FinalStatus ;
};
bw1.RunWorkerAsync();
bw2.RunWorkerAsync();
}
【问题讨论】:
-
bw2声明在哪里? -
他们会做吗?您的第二个后台工作人员在第一个工作人员之后启动?
-
对不起,我忘了显示 bw2 的声明位置,是的,bw2 似乎在 bw1 完成后开始。
-
可能是因为 bw1 即将完成,所以当 bw2 被调用时,它似乎是连续的?例如,如果您在 bw1 委托中添加 Thread.Sleep(10000),那么 bw2 是否还在等待 bw1 开始之前?
-
“同时” 在多线程时不是一个可获取的概念。
标签: c# multithreading backgroundworker