Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 并行运行两个循环_C#_Parallel Processing - Fatal编程技术网

C# 并行运行两个循环

C# 并行运行两个循环,c#,parallel-processing,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;

我正在研究一种视频流算法。我把整个视频分割成一系列图像。现在,每个图像都将根据时间进行流式传输(
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;            
}
\u timer=新系统计时器计时器计时器(250);
_timer.appead+=新的ElapsedEventHandler(timeCounterIncrementer);
_timer.Enabled=true;

对于(i=0;i最近,我遇到了一个类似的问题。至少我用这个方法修复了它,因为线程对我来说很难:)

如果您完成了将两个循环分成方法的工作,您可以并行调用这两个方法,如下所示:

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

最近我有一个类似的问题。至少我修复了它,因为线程对我来说很难:)

如果您完成了将两个循环分成方法的工作,您可以并行调用这两个方法,如下所示:

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

你可以用线程来代替同步踏板吗?我可以用线程,但不能同步。由于while循环和计时器都必须在其视频流上并行执行,因此时间准确性是主要要求。计时器值应与视频播放器的滑块值一致您可以使用线程并同步踏板吗?我可以使用线程但不能同步。由于while循环和计时器都必须在其视频流上并行执行,因此时间准确性是主要要求。计时器值应与视频播放器的滑块值一致即使我尝试过这种方法,我还是将while循环段放在一个方法中,然后将其称为task1,然后将_Timer.start()称为task2。但它不起作用:(什么不起作用?你对会发生什么的期望,甚至并行调用?我使用parallel.Invoke(()=>task1,()=>task2);两个调用都执行,但它们不是并行的。我想,因为我有一个timer对象,它每250毫秒调用一个方法,而这个方法不能使用parallel.Invoke执行。如果是两个不同的循环,那么这个技术对Meen是有效的,即使我尝试过这种方法,我将while循环段放在一个方法中,然后然后将其称为task1,然后我将_timer.start()称为task2。但它不起作用:(什么不起作用?你对发生什么的期望,甚至并行调用?我使用parallel.Invoke(()=>task1,()=>task2);两个调用都执行,但它们不是并行的。我想,因为我有一个timer对象,它每250毫秒调用一个方法,而这个方法不能使用parallel.Invoke执行。如果是两个不同的循环,那么这个技术对我来说就行了