2

ビデオストリーミングアルゴリズムに取り組んでいます。ビデオ全体を画像の配列に分割しました。これで、各画像は時間に基づいてストリーミングされます (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 ループが実行されている場合、timer メソッドtimeCounterIncrementerは実行されません。一方ではタイマー メソッドを実行し、他方では While ループを実行します。つまり、while ループとタイマー メソッドを並列に実行する方法は?

4

1 に答える 1

4

最近、私は同様の問題を抱えていました。スレッド化は私にとって2つ難しいので、少なくともTask Parallelism(Task Parallel Library)を使用して修正しました:)

2 つのループをメソッドに分割することができれば、次のようにこれら 2 つのメソッドを並行して呼び出すことができます。

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());
于 2012-10-08T07:15:24.560 に答える