作者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