我有以下要求:14个WCF呼叫应“并行”和“同时”执行,以便在14个显示器上启动“同步”视频。
请注意引号,因为我完全清楚这是不可能的,但我希望尽可能接近!
我尝试了后台线程和Parallel语句,结果在大多数情况下非常好。但是,有时每次服务呼叫之间会有较大的延迟。
我的代码如下所示:
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate(object sender, DoWorkEventArgs e)
{
Parallel.For(0, myChannelControllers.Length, n =>
{
try
{
IMyService channel = myChannelControllers[n].GetChannel();
channel.VideoWallPlay(...);
myChannelControllers[n].CloseChannel(channel);
}
catch (...)
{
}
});
};
worker.RunWorkerAsync();
有关优化的想法吗?
答案 0 :(得分:0)
如果是答案。在一个循环中获取通道。然后在另一个中播放和关闭。为什么要采用GetChannel的延迟?