我正在尝试使用 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
}
最佳答案
如前所述,同时进行 IO 不会为您带来太多利润。
如果是繁重的计算,是的,您可以使用 BackgroundWorker
,或者更好的是 Task
(来自 Task Parallel Library )。
Task t1 = Task.Run( () => HeavyMethod1() );
Task t2 = Task.Run( () => HeavyMethod2() );
await Task.WaitAll(new Task[] {t1, t2});
关于c# - 同时执行两个独立的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25362655/