[.NET] Thread.Sleep 和DoEvents

作者: renmax (竹科學友哥)   2016-12-28 11:21:34
請輸入專案類型(網站專案或者應用程式專案):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了,是否會造成什麼影響呢?
謝謝
作者: niklee29 (就是愛喝茶)   2016-12-28 14:46:00
Ya 當然不會出現因為100會先達到然後你就exit do 了...
作者: renmax (竹科學友哥)   2016-12-28 15:41:00
不好意思 可能我表達有問題 我想問為什麼會在迴圈跑三十多秒後 才會進入IF判斷式? 是因為SYSYTEM那兩行的關係嗎?
作者: niklee29 (就是愛喝茶)   2016-12-28 16:09:00
sleep(100) 代表程式會停0.1秒後繼續,所以看你迴圈跑幾次,每跑一次+0.1s如果不是要限制迴圈頻率就把那兩行刪了

Links booklink

Contact Us: admin [ a t ] ucptt.com