[.NET] Thread.Sleep 和DoEvents

看板Visual_Basic作者 (竹科學友哥)時間8年前 (2016/12/28 11:21), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
請輸入專案類型(網站專案或者應用程式專案):VS2005 各位前輩好,code的片段如下: Log("GO!") Do If Value = 100 Then Log("Done!") ............. ............. Exit Do Else If Value = 200 Then Log("YA!") ............... ............... GoTo ready End If System.Threading.Thread.Sleep(100) System.Windows.Forms.Application.DoEvents() End If Loop 從Log處發現從印出GO!看到Done!之間跑了三十多秒,期間並沒有印出YA! 所以,我的猜測應該是在下面兩行跑了三十多秒的關係 System.Threading.Thread.Sleep(100) System.Windows.Forms.Application.DoEvents() 請問一下,這兩行的用意通常都用在什麼時機點呢? 若我把這兩行給Mark了,是否會造成什麼影響呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.176.85 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1482895296.A.3DD.html

12/28 14:46, , 1F
Ya 當然不會出現因為100會先達到然後你就exit do 了...
12/28 14:46, 1F

12/28 15:41, , 2F
不好意思 可能我表達有問題 我想問為什麼會在迴圈跑三十多
12/28 15:41, 2F

12/28 15:42, , 3F
秒後 才會進入IF判斷式? 是因為SYSYTEM那兩行的關係嗎?
12/28 15:42, 3F

12/28 16:09, , 4F
sleep(100) 代表程式會停0.1秒後繼續,所以看你迴圈跑幾
12/28 16:09, 4F

12/28 16:09, , 5F
次,每跑一次+0.1s
12/28 16:09, 5F

12/28 16:11, , 6F
如果不是要限制迴圈頻率就把那兩行刪了
12/28 16:11, 6F
文章代碼(AID): #1OOo_0FT (Visual_Basic)
文章代碼(AID): #1OOo_0FT (Visual_Basic)