c# - 同时执行两个独立的方法

标签 c# .net 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
}

最佳答案

如前所述,同时进行 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/

相关文章:

c# - LINQ 语句作为 if 条件

c# - 评论存储在哪里以及如何提取它们?

c# - Entity Framework 中记录插入的空引用异常

c# - WindowClosing方法发生异常时WPF应用程序关闭

c# - 基于对象中枚举字段的 xaml 样式

c# - 将数据表中选定的列绑定(bind)到数据网格中

c# - 更改 DataGridView 标题单元格的文本对齐方式和字体大小

c# - LINQ 查询拟合模型

c# - 只要支持.NET4,托管就支持MVC5吗?

c# - 使用 IHttpAsyncHandler 异步调用 WebService