我正在研究视频流算法。我将整个视频分成了一系列图像。现在,每个图像将根据时间进行流式传输(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循环和计时器方法?
答案 0 :(得分:3)
最近我有一个类似的问题。至少我使用Task Parallelism (Task Parallel Library)修复了它,因为线程对我来说是2 hard :)
如果你完成将两个循环分成方法,你可以平行地调用这两个方法,如下所示:
Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());