2016-11-30 31 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填充該事件被解僱的順序排列?如果不是每次事件觸發時都存儲一個整數,那麼我會存儲2000或10000個整數?我需要擔心比賽條件嗎?

我對C#/ .NET的內部工作原理並不熟悉,所以我很樂意就如何保證我們按照事件按時間順序排列的相同順序填充buffer提供任何建議。

+0

你應該擔心比賽條件。如果我是你,我會使用'lock'。 –

+0

看看這些網頁:http://stackoverflow.com/questions/786383/c-sharp-events-and-thread-safety和http://stackoverflow.com/questions/16216400/c-sharp-events-執行線程安全 –

+2

您的所有事件只能從UI線程或多個後臺線程觸發? – 3615

回答

0

如果您使用ConcurrentQueue<int>,您將擁有線程安全的先進先出解決方案。

相關問題