2017-04-05 59 views
-2

我使用的是通過回調返回圖像的攝像機的API,像這樣:在不同的線程執行回調

camera.StartCapture(ImageEvent); 

protected void ImageEvent(ManagedImage image) 
{ 
    // do something with the image 
} 

的問題是,ImageEvent不斷被調用,不讓其他方法正確運行。所以我想在不同的線程中運行ImageEvent,我該怎麼做?

使用異步/等待的解決方案將是更可取的。

+1

您可以在另一個線程中運行'StartCapture'。這個'ManagedImage'與UI有什麼關係?如果是這樣,你會得到一些多線程訪問問題。 – Stefan

+0

@Stefan,所以如果我從新線程傳遞委託,委託方法將在這個新線程中運行?另外,它不是UI相關的。 –

+0

你能解釋一下你的'不讓其他方法正常運行'問題多一點嗎?如果你不顯示圖像,你是否處理它們並將它們寫入磁盤?你有沒有檢查你的硬盤的活動? – Stefan

回答

1
camera.StartCapture(image => Task.Run(() => ImageEvent(image))); 
+0

但ImageEvent仍然會在主線程中運行。我想避免它在主線程中被調用。 –

+0

@GabrielJ當然,把它放在ImageEvent之外,讓我編輯 – MistyK

+0

事實證明這比這更復雜一點,因爲'camera'是動態類型的。但是我不會最終使用多線程。謝謝你,遺憾浪費你的時間 –

相關問題