c# 2个BackgroundWorkers同时启动

标签 c# multithreading backgroundworker

有人可以看一下并告诉我我的代码有什么问题吗? 我正在“即时”创建 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/

相关文章:

c# - 如何从命令行运行 Roslyn 而不是 csc.exe?

Java,SocketChannel选择器,将写 channel 与阻塞队列结合起来

c# - WPF 绑定(bind)到带有类的字典

multithreading - 环形缓冲区,1 个写入器和 N 个读取器

java - 如果没有 EventQueue 的 invokeLater,第一个 UserTypedString 不会在 keyTyped (keyListener) 中被识别

c# - RunWorkerCompleted 未在主 UI 线程中执行?

C# - 一个线程无限循环的多线程

c# - 调试后台 worker

c# - 如何使用 C# 属性?

c# - 如何从 IHttpActionResult 方法返回自定义变量?