【问题标题】:Multiple Backgroundworkers + C#多个后台工作者 + C#
【发布时间】:2011-01-27 16:14:10
【问题描述】:

快速提问 - 是否可以同时运行两个后台工作人员?我似乎记得尝试过一次并遇到错误,并且似乎还记得读过你只能拥有一个......但我找不到另一个明确谈论拥有多个的线程......

非常感谢任何想法!

干杯

【问题讨论】:

    标签: c# multithreading backgroundworker


    【解决方案1】:

    您可以拥有任意数量的后台工作人员并同时运行。示例:

    var worker1 = new BackgroundWorker { WorkerReportsProgress = true };
    var worker2 = new BackgroundWorker { WorkerReportsProgress = true };
    DoWorkEventHandler doWork = (sender, e) =>
    {
        for (int i = 0; i < 10; i++)
        {
            var progress = (int)((i + 1) * 100.0 / 10);
            var worker = (BackgroundWorker)sender;
            worker.ReportProgress(progress);
            Thread.Sleep(500);
        }
    };
    worker1.DoWork += doWork;
    worker2.DoWork += doWork;
    worker1.ProgressChanged += (sender, e) =>
    {
        label1.Text = e.ProgressPercentage.ToString();
    };
    worker2.ProgressChanged += (sender, e) =>
    {
        label2.Text = e.ProgressPercentage.ToString();
    };
    
    worker1.RunWorkerAsync();
    Thread.Sleep(1000);
    worker2.RunWorkerAsync();
    

    【讨论】:

    • 为什么不为 worker1 和 worker2 创建单独的 doWork 委托?
    • 为了举例,没有必要。
    • 感谢图片示例
    猜你喜欢
    • 2011-07-18
    • 2011-10-30
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多