2014-09-21 30 views
-2

我的代碼:無法顯示/隱藏標籤而函數執行

main() 
{ 
    label1.Visible=true; 

    /* code that takes about 1-2 minutes to respond */ 

    label1.Visible=false; 
} 

現在我無法顯示隱藏&該標籤。

如何顯示和隱藏標籤?

+0

如果要在代碼執行時更改標籤狀態,則應考慮多線程。 – 2014-09-21 15:46:39

+0

根本原因解釋[這裏](http://stackoverflow.com/a/952964/60761)。下面的「await」答案是一個更好的解決方案。 – 2014-09-21 15:53:37

+0

我認爲你需要調用'Invalidate'然後'Update'。請參閱[Control.Invalidate方法](http://msdn.microsoft.com/en-us/library/598t492a%28v=vs.110%29.aspx)。 – jww 2014-09-21 16:08:59

回答

2

這是因爲所有的工作都是在一個線程中完成的,這個線程是您的UI線程。嘗試另一個線程異步執行的辛勤工作:

async void YourMethod() 
{ 
    label1.Visible=true; 
    await Task.Run(() => /* do the work */); 
    label1.Visible=false; 
} 

詳情請參閱Asynchronous Programming with Async and Await

+0

注意YourMethod應該是一個事件處理程序('async void YourMethod(object sender,SomeEventArgs e)'),否則你只能將問題轉移到其他地方。 – 2014-09-21 16:50:14