我有一個數據流從外部來源進入,我目前收集在BackgroundWorker
。每次獲得另一塊數據時,都會使用ReportProgress()
調用將該數據呈現給GUI。如何從.net BackgroundWorker緩衝輸出?
我覺得ProgressChanged
函數只是一個同步機制,儘管當我的工作線程調用它時,兩個線程都在GUI線程處理更改時被鎖定。所以我認爲問題是當後臺線程更新GUI時,它不能接收任何數據,這意味着我們會丟失幾個數據包。這是對的還是我的數據包更容易在其他地方出現?
如果是原因,然後將添加第二個線程做GUI更新是一個合理的解決方案,還是有解決,我應該深入探討這些問題的更好/更徹底的辦法?
任何想法和建議將非常受歡迎。
這些事件是以任何方式緩衝的嗎?這可能是因爲在添加另一個事件之前,GUI沒有處理第一個事件,取而代之的是?或者是標準windows消息泵的這部分? – 2009-06-25 11:05:21