2011-03-24 106 views
1

progressBar偶爾會停止更新(以及GUI的其餘部分),並且缺少矩形部分。 這隻能在目標windows-ce 5.0平板設備上間歇性地看到,從來沒有在Windows 7上看到。 progressBar.Refresh()改變progressBar.Maximum後沒有幫助。 導致它的確切順序是未知的,我無法在目標設備上運行調試器(我使用PC平臺調試應用程序,但在PC上運行應用程序時從未發現過此問題)。 什麼可能導致此? 進度條及其關聯的標籤以這種方式更新。什麼可能會損壞winforms progressBar?

progressBar.Value = Status.value; 
label.Text = Status.value; 

label.Text總是正確的。

+1

從後臺更新線程無需調用? – 2011-03-24 13:38:04

+0

我使用Timer = System.Windows.Forms.Timer來更新progressBar和所有其他GUI組件。 – jacknad 2011-03-24 13:42:11

+0

應用程序仍在相互作用?也許資源消耗使它掛起?嘗試玩線程優先。 – 2011-03-24 13:43:56

回答

0

根本原因是對gui線程之外的gui進行更改。實際的解決方案是對System.Windows.Forms.Timer中的進度條進行所有更改。

1

你可以回波數據到一個Label控件,特別是像

debugLabel.Text = progressBar1.Value; 

這將幫助你找到什麼進度條的值沒有顯示出來,如果它是一貫的相同值或隨機值。

隨機值會讓我覺得GUI太忙而無法脫身。

相同的值會讓我覺得設備上的壞像素。

您是否有更多數據提供?

+0

我剛剛添加了一個片段,顯示了進度條及其關聯標籤的更新方式。 – jacknad 2011-03-24 14:26:22

+0

我猜'Status.Value'是一個'Integer'類型。如果它是一個小數值('float','double'等),那麼您將丟失數據到'int'。 – jp2code 2011-03-24 17:19:17

+0

是的。 Status.Value是一個整數類型。 – jacknad 2011-03-25 13:44:04

0

聽起來像UI線程沒有得到足夠的量子來完全繪製它需要的一切。設置其值和標籤文本更新後,嘗試調用Application.DoEvents

+0

克里斯!自從我使用Outlook Express在Microsoft板上發佈信息後,我還沒有收到您的消息。 – jp2code 2011-03-24 17:20:50