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)
如前所述,同时执行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)
| 归档时间: |
|
| 查看次数: |
7122 次 |
| 最近记录: |