【发布时间】:2015-08-08 07:30:49
【问题描述】:
我已经创建了一个使用第三方服务方法的 WCF 服务方法(调用 methodA、methodB、methodC),这三个都属于不同的服务,即 serviceA、serviceB、@987654326 @。
每个方法都接受单个输入对象进行处理(不是输入对象列表)。但我必须处理多个对象,所以我在 for 循环中使用这些方法。
现在的问题是,假设我有 3 个对象要使用 methodA 处理,2 个对象要使用 methodB 处理,5 个对象要使用 methodC 处理,并考虑每个方法需要 1 秒来处理然后总时间处理所有内容几乎需要 10 秒。为了在谷歌搜索后克服这个问题,我得到了线程和并行 linq 等选项。当然我对线程及其性能没有足够的了解,我选择远离。现在使用并行 linq,我发现性能提高了。但是仍然没有满足期望(有时它会抛出超时异常)。
所以请建议我现在应该尝试什么?是潜入线程还是其他尝试?
【问题讨论】:
-
看看
Task Parallel Library。 -
我会说
Parallel.Invoke是您所需要的。你的代码将是Parallel.Invoke(()=>ServiceA.methodA(param1), ()=>Serviceb.methodB(param2), ()=>ServiceC.methodC(param3)); -
我个人不明白你对这个
suppose i have 3 objects to process with methodA, 2 objects to process with methodB and 5 objects to process with methodC的意思。也许发布你的代码? -
原服务操作的调用者是否需要一定时间内的响应?他们需要回应吗?
标签: c# multithreading wcf plinq