C# 使用Reactive并行运行方法
总而言之,我一直在寻找RX框架的解决方案。我的C#4.0类将调用两个不同的方法,为了节省时间,我想并行执行。有没有办法使用反应式框架并行运行两种不同的方法?不仅并行运行这两个方法,还应该等待其他方法完成并合并这两个结果。示例如下所示:C# 使用Reactive并行运行方法,c#,.net,parallel-processing,system.reactive,C#,.net,Parallel Processing,System.reactive,总而言之,我一直在寻找RX框架的解决方案。我的C#4.0类将调用两个不同的方法,为了节省时间,我想并行执行。有没有办法使用反应式框架并行运行两种不同的方法?不仅并行运行这两个方法,还应该等待其他方法完成并合并这两个结果。示例如下所示: AccountClass ac = new AccountClass(); string val1 = ac.Method1(); bool val2 = ac.Method2(); 如何并行运行这两个方法并等待彼此完成并将结果合并到订阅部分?您可以
AccountClass ac = new AccountClass();
string val1 = ac.Method1();
bool val2 = ac.Method2();
如何并行运行这两个方法并等待彼此完成并将结果合并到订阅部分?您可以使用该方法实现所需的行为。尝试以下操作:
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.....
使用System.Threading.Tasks;
字符串val1=null;
布尔值2=假;
var actions=新列表类似于,但更简洁
string val1 = null;
bool val2 = false;
Action action1 = () =>
{
val1 = ac.Method1();
};
Action action2 = () =>
{
val2 = ac.Method2();
};
Parallel.Invoke(new ParallelOptions(), action1, action2);
这比Rx更像是一个TPL
/Parallel
问题-这里没有真正需要“基于推送”的功能。这(或者用combinelatetest
替换Zip
)可能是最直接的答案,尽管我仍然坚持你不需要使用Rx:)为什么我的答案被否决了?如果能得到谁的评论就好了
string val1 = null;
bool val2 = false;
Action action1 = () =>
{
val1 = ac.Method1();
};
Action action2 = () =>
{
val2 = ac.Method2();
};
Parallel.Invoke(new ParallelOptions(), action1, action2);