2012-07-24 72 views
0

我寫了一個C#應用程序,它正在處理2個附屬設備,一臺顯示圖像的數字顯微鏡和一臺計數器,它使我返回一個計數器。這兩個設備同時運行並生成事件,指示圖像和計數器值的變化。處理單獨線程中的設備引發的事件

顯微鏡生成低於事件:

void _ImageCaptured(object source, WebcamEventArgs e) 
{ 
} 

And counter generates below event: 
void _OnRegisterValueChanged(object sender, RegisterChangeEventArgs args) 
{ 
} 

作爲一個單線程應用程序,我目前的應用程序不能以相同的速度獲得圖像和計數器值和它們之間有一定的滯後性。我想讓這個應用程序是多線程的,並在單獨的線程中處理這兩個事件。感謝任何幫助實現這一目標。

+0

您可能沒有創建線程,但通常從ThreadPool執行C#事件。那麼產生這些事件的是什麼?你做一些beginRead()或beginReceive()?還是你從事件處理程序中調用invoke(),並在UI線程上處理它們? – PRouleau 2012-07-24 04:03:50

回答

0

所以這意味着你要將邏輯從初始點分成兩個不同的線程運行 - 然後你會在不同的線程中收到每個通知 - 每個線程都在一個事件被觸發的地方。那麼如果你需要在這些事件之間分享一些數據 - 只需同步就可以了。