1
我開發了一個數據採購子系統作爲一個DLL,它使用自己的線程捕獲數據並使用ObservableCollections發佈數據。我遇到了幾個問題,因爲這些事件的消費者在接收到ObservableCollection事件時會執行昂貴的操作,這使得我的引擎比預期的要慢。如何分離ObservableCollection?
我打算派在不同的線程中的事件,以避免這個問題,但我有幾個擔心:
public class ObservableCollection2
{
public void Add()
{
_internalObservableCollection.Add();
new Thread() { => Raise the event }
}
}
- 這是一個已經解決了問題的標準解決方案?看起來像線程爭用 應該是比較常見的東西。
- 使用線程不會嚴重降低 應用程序的性能?
- 使用ThreadPool不會使用所有可用的 線程,因爲在子系統中正常發送100到200個 通知每秒?
感謝您的想法。
感謝您的寶貴意見。關於你的想法:1)我無法管理客戶在他們的處理程序上做什麼。 2)我認爲ThreadPool只能提供幾個線程。 3)我會看看這個想法,謝謝。 4)我也喜歡這種方法,再次感謝。 –
@ SoMoS:1)好吧,如果你定義處理程序必須快速,而客戶端不會堅持 - 他們自己有罪,而不是你; 2)是的,但是如果有很多調用,線程的數量會動態地增加,並且無論如何,如果舊的線程沒有完成,你就不應該開始下一個事件 - 所以你只會使用一個線程。也許你可以有一個內部線程並在其中運行一個任務隊列? – Vlad
弗拉德:關於2,你爲什麼認爲我不應該開始下一個活動呢? –