有人可以看一下并告诉我我的代码有什么问题吗? 我正在“即时”创建 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();
}
最佳答案
谢谢FerretallicA! 我无法将您的评论标记为最佳答案,所以我在这里写下: 这正是解决问题的方法,BackgroundWorker bw2 对于 bw1 来说太快了,所以我添加了 sleep 时间:
bw1.RunWorkerAsync();
System.Threading.Thread.Sleep(1000);
bw2.RunWorkerAsync();
现在 bw1 在 bw2 启动之前有足够的时间启动,并且一切正常! 谢谢大家!你太棒了! 简单的解决方案是最好的!
关于c# 2个BackgroundWorkers同时启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300191/