同时执行两个单独的方法

Vah*_*hid 4 .net c# wpf multithreading backgroundworker

我正在尝试使用Backgroundworker(或者如果不可能使用其他方法)同时执行两个单独的方法来获得性能.这个想法是在方法上做大量的计算.

有可能吗?

private readonly BackgroundWorker _worker = new BackgroundWorker();
private readonly BackgroundWorker _worker2 = new BackgroundWorker();

public MainWindow()
{
    InitializeComponent();

    _worker.WorkerReportsProgress = true;
    _worker.WorkerSupportsCancellation = true;
    _worker.DoWork += worker_DoWork;
    _worker.RunWorkerAsync();

    _worker2.WorkerReportsProgress = true;
    _worker2.WorkerSupportsCancellation = true;
    _worker2.DoWork += worker_DoWork2;
    _worker2.RunWorkerAsync();
}

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
    // Do something
}

private void worker_DoWork2(object sender, DoWorkEventArgs e)
{
    //  Do something simultaneously with worker_DorWork
}
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 7

如前所述,同时执行IO不会获得多少利润.

如果计算是重的,是的,你可以使用a BackgroundWorker,甚至更好的a Task(来自任务并行库).

Task t1 = Task.Run( () => HeavyMethod1() );
Task t2 = Task.Run( () => HeavyMethod2() );

await Task.WaitAll(new Task[] {t1, t2});
Run Code Online (Sandbox Code Playgroud)

  • 谁贬低了这个,为什么?我很想知道你的推理.. (2认同)