2

晕,我一直在寻找 RX 框架的解决方案。我的 C# 4.0 类将调用 2 个不同的方法,为了节省时间,我想并行执行。有没有办法使用 Reactive Framework 并行运行 2 种不同的方法?不仅并行运行这两种方法,而且还应等待其他方法完成并结合两种结果。示例如下图:

AccountClass ac = new AccountClass();    
string val1 = ac.Method1();  
bool val2 = ac.Method2();

我如何运行这两种方法并行运行并在订阅部分中相互等待完成并将结果组合在一起?

4

4 回答 4

5
var result = Observable.Zip(
    Observable.Start(() => callMethodOne()),
    Observable.Start(() => callMethodTwo()),
    (one, two) => new { one, two });

result.Subscribe(x => Console.WriteLine(x));
于 2013-03-04T18:31:58.133 回答
0

您可以使用zip方法来实现所需的行为。

于 2013-03-04T14:12:16.053 回答
-1

尝试这个:

using System.Threading.Tasks;


string val1 = null;
bool val2 = false;

var actions = new List<Action>();

actions.Add(() =>
{
     val1 = ac.Method1();
});

actions.Add(() =>
{
     val2 = ac.Method2();
});


Parallel.Invoke(new ParallelOptions(), actions.ToArray());

// alternative - using Parallel.ForEach:
// Parallel.ForEach(actions, action => action());

// rest of your code here.....

有用的链接:

http://tipsandtricks.runicsoft.com/CSharp/ParallelClass.html

于 2013-03-04T14:19:07.200 回答
-1

类似于Rui Jarimba,但更简洁一些;

        string val1 = null;
        bool val2 = false;

        Action action1 = () =>
        {
            val1 = ac.Method1();
        };

        Action action2 = () =>
        {
            val2 = ac.Method2();
        };

        Parallel.Invoke(new ParallelOptions(), action1, action2);
于 2013-03-04T19:58:00.743 回答