[問題] Application.DoEvents, winform要點兩次

作者: siate (yee)   2018-01-13 21:20:02
我有兩個button,start和stop
我想要按下start後在winform上顯示一直跑的數字
當按下stop就停止,程式碼大概如下
flag = 0;
start
{
while(flag == 0)
{
label.Text = (i++).ToString();
Application.DoEvents();
}
}
stop
{
flag = 1;
}
我原本是用label.Update(),但發現程式在跑的時候winform完全不理按鍵
後來改成application.DoEvents問題解決了
但按下start後整個介面處於忙碌狀態,游標移到button上不會變色
按一下介面後游標移到button上就有反應了,好像介面從假死狀態活過來了一樣
再按一下stop就可執行了
有方法可以讓按下start後介面是處於隨時可以按stop的狀態嗎
也就是說不用按兩下,介面隨時可接受外界觸發的狀態
作者: testPtt (測試)   2018-01-13 22:03:00
迴圈要寫在別的thread跑 再去更新form的顯示
作者: groovy2016   2018-01-13 23:20:00
可以看看action
作者: Litfal (Litfal)   2018-01-13 23:59:00
DoEvents...好古早的用法,好懷念阿XD
作者: wl02099278 (JiaRong)   2018-01-14 19:30:00
updateUI放控制label.text, thread事件內放while跑..
作者: disabledman (m.m.)   2018-01-24 20:41:00
執行緒囉

Links booklink

Contact Us: admin [ a t ] ucptt.com