2011-07-08 65 views
0

我的表單創建一個背景工作,每6秒檢查一次。結果是1-100,我想顯示這個。從另一個線程更新progressbar的值?

但是,如果我這樣做直截了當我得到索姆交叉線程錯誤,所以我後一些研究代表是做到這一點。在Form1類中創建

IVE:

public delegate void SetProgressbarValueDelegate(int val); 

但我如何「連接爲」以實際更新進度?

感謝

回答

4

使用的WinForms假設您正在,該BackgroundWorker類引發一個事件ProgressChanged將自動被編組返回到您的UI線程。您應該在您的處理程序中針對此事件更新您的用戶界面。

MSDN documentation中有一些簡單的使用BackgroundWorker的例子。

+0

Okey,它最初的作品。但如果我有一個值,讓我們留下99並希望它成爲進度條的新值,我該如何發送它?即時通訊(發件人爲BackgroundWorker).ReportProgress(99);內部worker_DoWork但我真的想傳輸數據,而不僅僅是數字(用於其他控件) – Jason94

+1

對不起,我已經意外地對這一個downvote,雖然我的意圖是upvote。在編輯問題之前我無法更改它。實在抱歉!但請編輯,我會解除我的愚蠢行爲。 – faester

+0

@faester - 剛剛編輯..謝謝你:-) – ColinE