2011-08-27 71 views
3

我想添加一些項目到列表框,但事情是,我希望應用程序在添加每個項目後等待500毫秒,然後添加下一個項目;所以我用下面的代碼:如何讓我的應用程序等待特定的時間?

reduction_list.Items.Add("ID"); 
    System.Threading.Thread.Sleep(500); 

    reduction_list.Items.Add("Name"); 
    System.Threading.Thread.Sleep(500); 

    reduction_list.Items.Add("City"); 
    System.Threading.Thread.Sleep(500); 

    reduction_list.Items.Add("Major"); 

但1500毫秒的應用程序等待,並增加了整個4項一起。

+0

這是在一個asp.net應用程序或winforms應用程序? –

+0

對不起,我沒有做正確的標籤。它是winforms – Daniel

回答

1

這是因爲您添加後沒有更新界面,所以只需在每個電話:

reduction_list.Invalidate(); 
reduction_list.Update(); 

這裏的問題是,您沒有給接口時間來更新自身,因爲您正在UI線程上執行代碼。因此,在每次添加後添加Invalidate()Refresh()將導致應用程序刷新reduction_list視圖。

+0

它沒有工作...仍然增加了1500毫秒後的整個4項 – Daniel

+0

thx ...它的工作 – Daniel

+1

即使這個工程,它永遠不會被建議使用戶界面凍結 - 它會阻止任何其他用戶交互。在這種情況下,用戶界面鎖定1.5秒,這在我看來已經很長了。 –

1

問題是,你正在使UI線程休眠,這意味着它永遠不會有機會重新繪製UI的新項目。

您應該使用計時器代替。 (要使用的確切計時器類取決於您使用的是什麼UI框架--Winforms或WPF,請適當標記您的問題。)

+0

我編輯了標籤....所以你能寫出我需要寫的全部命令嗎? – Daniel

相關問題