2016-11-30 3 views
0

私は配列バッファを割り当てられているC#クラスを開発しています。イベントが発生するたびに、配列の次の要素にデータを取り込みます。ですから、例えば:イベントを使用してC#/ .NETの配列に要素をコピーする順序を保証する方法はありますか

class MyClass 
{ 
    private int[] buffer = new int[10]; 
    private int index = 0; 

    public void EventFired(object sender, IntEventArgs e) 
    { 
     buffer[index] = e.Integer; 
     index++; 
    } 
} 

私は、互いの矢継ぎ早の中に発射された複数のイベントを持っている場合は、すべての0.5〜1.0ミリが言うには、EventFiredイベントが発射された順に配列を埋めるだろうか?イベントが発生するたびに1つの整数を格納する代わりに、2,000または10,000の整数を格納していましたか?競争条件が気になる必要がありますか?

私はC#/ .NETの内部の仕組みに精通していないので、bufferにイベントが時系列的に発生したのと同じ順序でデータを埋め込むことを保証するためのアドバイスが大好きです。

+0

競合状態が心配です。もし私があなたなら私は 'ロック 'を使うでしょう。 –

+0

これらのページをご覧ください:http://stackoverflow.com/questions/786383/c-sharp-events-and-thread-safety and http://stackoverflow.com/questions/16216400/c-sharp-events-実行中スレッドセーフです –

+2

すべてのイベントはUIスレッドまたはいくつかのバックグラウンドスレッドからのみ起動されますか? – 3615

答えて

0

ConcurrentQueue<int>を使用する場合、スレッドセーフである先入れ先出しのソリューションが用意されています。

関連する問題