并行运行两个循环

时间:2012-10-08 07:03:07

标签: c# parallel-processing

我正在研究视频流算法。我将整个视频分成了一系列图像。现在,每个图像将根据时间进行流式传输(Image.TimeInMs表示要流式传输或发送图像的时间)。为了保持时间,我有System.Timer.Timer个对象。

_timer = new System.Timers.Timer(250);
_timer.Elapsed += new ElapsedEventHandler(timeCounterIncrementer);
_timer.Enabled = true;

for( i =0; i<imageArray.length;i++)
{
    while (timeCounter < imageArray[i].TimeInMs)
    {                          
        StreamImage();
    }
}

void timeCounterIncrementer(object sender, ElapsedEventArgs e)
{
    timeCounter+=250;            
}

在上面的代码中,当while循环运行时,定时器方法timeCounterIncrementer将不会执行。我希望计时器方法一方面运行而while循环另一方面。换句话说,如何并行运行while循环和计时器方法?

1 个答案:

答案 0 :(得分:3)

最近我有一个类似的问题。至少我使用Task Parallelism (Task Parallel Library)修复了它,因为线程对我来说是2 hard :)

如果你完成将两个循环分成方法,你可以平行地调用这两个方法,如下所示:

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());