看板 C_Sharp 關於我們 聯絡資訊
我有兩個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的狀態嗎 也就是說不用按兩下,介面隨時可接受外界觸發的狀態 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.65.145 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1515849605.A.05F.html ※ 編輯: siate (114.40.65.145), 01/13/2018 21:20:45 ※ 編輯: siate (114.40.65.145), 01/13/2018 21:24:05 ※ 編輯: siate (114.40.65.145), 01/13/2018 21:26:01
testPtt: 迴圈要寫在別的thread跑 再去更新form的顯示 01/13 22:03
我查了一下,start裡改成MethodInvoker mi = new MethodInvoker(this.UpdateUI); this.BeginInvoke(mi,null); 然後while放在UpdateUI裡就成功了,雖然不太懂原理
groovy2016: 可以看看action 01/13 23:20
Litfal: DoEvents...好古早的用法,好懷念阿XD 01/13 23:59
※ 編輯: siate (114.40.65.145), 01/14/2018 01:39:13
wl02099278: updateUI放控制label.text, thread事件內放while跑.. 01/14 19:30
disabledman: 執行緒囉 01/24 20:41