作者bbblue (植物進化中...)
看板C_Sharp
標題[問題]方法呼叫時,執行狀態的表示方式請教...
時間Wed Jul 21 18:26:42 2010
各位先進好:
這個問題似乎是基本的程式碼執行緒流程問題,
希望能在C# window form的程式中,
表示內部方法呼叫時的執行狀態,
但是百試不得其解,希望大家能給予指點...
狀況如下:
有一個自行建立的方法A,我希望在呼叫方法A時,
window form上的label物件能在進入方法/離開方法時表示處理狀態,
構想實現的原始程式碼示意如下:
public void A()
{
label1.Text = "方法開始執行"; //狀態表示1
(方法執行內容...)
label1.Text = "方法執行結束"; //狀態表示2
}
實際執行後,發現label的狀態是必須等方法執行完後,
才會回傳給Form顯示,
也就是說...「狀態表示1」是不會顯示在Form上的,
僅會在方法內部進行字串變數替換,
最後把「狀態表示2」的字串變數值傳回...
然而,把這2行指令替換為MessageBox.Show()時,
卻又能夠依序執行,而不會等到方法結束之後才一次跳出2個MessageBox...
因此,
若希望在方法呼叫後,能在Form上顯示「開始執行」與「執行結束」,
應該如何實現呢?
煩請大家指導了...
感謝~ m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.132.23.123
1F:→ optimist9266:並不是等到結束才回傳,是等到結束才被畫出來。 07/21 18:34
2F:→ optimist9266:用BackgroundWorker來執行方法A,這樣就會有視覺化 07/21 18:34
3F:→ optimist9266:MessageBox是會打斷當前方法的執行,等到視窗回傳才 07/21 18:35
4F:→ optimist9266:繼續執行,所以不會一次跳兩個。 07/21 18:35
5F:→ pico2k:另一種作法:在thread中,去設定label.text的內容... 07/21 19:08
6F:→ pico2k:不過這種作法要用delegate去設定label的內容... 07/21 19:09
7F:推 anumis:如果不是Thread,在lab.text下方補個application.doevent() 07/21 21:56
8F:→ bbblue:a大的方法也非常好用~!!我可以用不建立跨執行緒的方法了^^ 07/21 22:15
9F:→ bbblue:感謝大家~!! m(_ _)m 07/21 22:16