討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 網路投保旅行平安險 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
VB 有SLEEP的功能嗎
更改我的閱讀文章字型大小
作者 : emcwu(EMCWU)
[ 貼文 1 | 人氣 855 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/10/8 下午 04:26:21
請問一下 VB有類似SLEEP的函式可供呼叫嗎
因為我想在60秒後再執行下一個步驟
作者 : luo673(小琳) VB.Net卓越專家Visual Basic優秀好手貼文超過500則
[ 貼文 630 | 人氣 720 | 評價 3940 | 評價/貼文 6.25 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/10/8 下午 05:13:57
:::可以試著用timer物件看看!!!
作者 : dank8435(Daniel)討論區板主 資訊類作業求救優秀好手貼文超過200則
[ 貼文 415 | 人氣 7059 | 評價 2010 | 評價/貼文 4.84 | 送出評價 11 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/10/8 下午 09:26:05
運用 Timer 應該就可以了吧!
作者 : kchihmin(寫程式ㄅ)
[ 貼文 9 | 人氣 29 | 評價 60 | 評價/貼文 6.67 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/10/9 下午 03:12:41
試試看這段程式ㄅ!

Const cSecondsInDay = 86400
Public Sub subDelay(sngDelay As Single)
    Dim sngStart As Single
    Dim sngStop As Single
    Dim sngNow As Single

    sngStart = Timer
    sngStop = sngStart + sngDelay
    
    Do
     sngNow = Timer
     If sngNow < sngStart Then
     sngStop = sngStart - cSecondsInDay
     End If
     DoEvents
    Loop While sngNow < sngStop

End Sub
作者 : virgocindy(Wen)
[ 貼文 3 | 人氣 171 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/4 下午 05:26:29
Private Declare Sub Sleep Lib "kernel32" _
  (ByVal dwMilliseconds As Long)

作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2189 | 人氣 89850 | 評價 10120 | 評價/貼文 4.62 | 送出評價 79 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/4 下午 10:34:07
>Private Declare Sub Sleep Lib 'kernel32' _
> (ByVal dwMilliseconds As Long)

這個不能在 VB 用呀, 因為 VB (VB.net 除外) 是 single thread 的, 用了 Sleep(), 整支程式都會被停下來, 同一程式之內的 User Interface 都不能動呀. "寫程式ㄅ" 說的才是正確的做法.
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/5 上午 01:03:32
>這個不能在 VB 用呀, 因為 VB (VB.net 除外) 是 single thread 的, 用了 Sleep(), 整支程式都會被停下來, 同一程式之內的 User Interface 都不能動呀. '寫程式ㄅ' 說的才是正確的做法.

不對喔!...你是怕它"永遠醒不過來"嗎?!即使是單一執行緒,它只是被pause而不是stop(deadly),時間到自然會再被喚醒.
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2189 | 人氣 89850 | 評價 10120 | 評價/貼文 4.62 | 送出評價 79 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/6 上午 12:16:01
阿戊, 試試在 VB 每半秒 Sleep 半秒, 然後用 '寫程式ㄅ' 說的做同樣的事情, 你就會明白分別有多大.
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/6 上午 01:10:28
那或許就是對原發問的"下一步驟"定義不同吧,如果在sleep與下一步驟之間還允許使用者做其他動作 那便不叫 (VB & SLEEP) 而是類似"鬧鐘"的功能了
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2189 | 人氣 89850 | 評價 10120 | 評價/貼文 4.62 | 送出評價 79 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/6 上午 07:45:03
阿戊, VB 都是 Single Thread 的 (VB.net 除外), 如果真的讓程式 Sleep, 就會連 repaint window 都停止了, 而且是 60秒 啊 (發問者說的), 有一個程式沒有回應 60秒, 多讓人困擾 @@!, 如果有人寫這樣的 VB 程式給我, 我是絕對不會接納的, 沒理由連 repaint 停了呀, 這個是 VB Single Thread 的先天缺陷, 所以 VB.net 就改掉了呀. 當然, 你是可以閉上眼睛不管程式語言的先天缺陷去寫程式的呀....

這個話題沒意義再討論下去的, 反正 "多讓人困擾" 的程式比比皆是, 你喜歡甚麼寫甚麼想, 跟我又沒關係的, 就當是各人喜好不同算了.

(@@" 不會再回應...)
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/11/6 下午 04:00:20
阿戊知道VB是單一執行緒...
發問者提的就是VB使用Sleep,並未作其他說明,也未提到要在下一步驟間還要插入其他步驟或其他動作或更新畫面,是不是有其"特殊理由",這個我們無從得知
要以 多執行緒+Sleep 來解釋 VB+Sleep 自然不會有讓人滿意結果
阿戊只知道Sleep在VB中可以達到這種作用 而不是 不能用,如果阿戊的發言 造成 白老鼠(Gary) 的不悅或誤解 ....sorry !
作者 : skylaker(fred)
[ 貼文 1 | 人氣 5 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/3/9 下午 02:32:59
在宣告中加入Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

即可呼叫Sleep(1000) '1秒鐘
作者 : bill_c(Bill)
[ 貼文 8 | 人氣 243 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/3/11 下午 04:32:14
試試看以下程式

Private sub wait(WaitSeconds As Single)
   Dim sngStartTime As Single
   
    sngStartTime = Timer
    
    Do While Timer < sngStartTime + WaitSeconds
     DoEvents
    Loop

End sub
作者 : timmyguo(tt''s) Visual Basic優秀好手ASP卓越專家貼文超過1000則
[ 貼文 1247 | 人氣 6140 | 評價 4260 | 評價/貼文 3.42 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/3/12 上午 10:23:41
Bill
理論上那樣寫是可以
但,時間若發生在晚上11點59分的後幾秒
因為timer是小於86400的值

sngStartTime + WaitSeconds
有可能大於86400
將造成無止盡的迴圈
作者 : peakhour(peakhour)
[ 貼文 17 | 人氣 8 | 評價 80 | 評價/貼文 4.71 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/3/14 上午 05:32:32
試試這個,每次暫停1/10秒,而不是整整靜止5秒鐘。較無抑制repaint的副作用。


for i = 1 to 50
     sleep(1000)
     DoEvents
next
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.21875