在并行执行中获取方法的返回值

Posted

技术标签:

【中文标题】在并行执行中获取方法的返回值【英文标题】:Get return value of method in parallel execution 【发布时间】:2015-05-26 13:03:09 【问题描述】:

我正在使用Parallel.Invoke 执行具有不同输入值的单个方法,但我想获取该方法的返回值。 我怎样才能得到它?

public class Work

    public static void Main()
    
        Parallel.Invoke(() => DoWork("Raju"),
                        () => DoWork("Ramu"));
    

    public static string DoWork(string data)
    
        return "testing" + data;
    

在上面的方法中我想得到DoWork的返回值。

【问题讨论】:

你读过这篇文章吗? :dotnetcurry.com/showarticle.aspx?ID=491 【参考方案1】:

只需像这样处理返回值:

string result1, result2;

Parallel.Invoke(() => result1 = DoWork("Raju"),
                () => result2 = DoWork("Ramu"));

还请记住,无论何时并行执行某些操作,都需要小心避免数据竞争和竞争条件。

【讨论】:

以上是关于在并行执行中获取方法的返回值的主要内容,如果未能解决你的问题,请参考以下文章

Python获取多进程执行的返回值

android中的asynctask可不可以并行执行多个

在 ADO.Net C# 中执行并行数据库访问

CompletionService异步非阻塞获取并行任务执行结果

并行执行多对并发任务

在执行并行 ssh 时获取“TypeError:'NoneType' 对象不可迭代”