按键精灵多线程倒计时重新启动的问题!

2025-01-02 05:44:59
推荐回答(2个)
回答1:

还是我给你代码吧。

Dimenv Finish,TimeOver //定义环境变量,作为两个线程是否结束标志

//先开启两个线程
CountdownID = BeginThread(Countdown(30)) //开启30秒倒计时线程
YourFunctionID = BeginThread(YourFunction())

//主程序
While True
If Finish = 1 Or TimeOver = 1 Then //如果其中一个线程结束
StopThread CountdownID
StopThread YourFunctionID //停止线程
Delay 5000 //为了看效果,我故意设长时间了,实际设100ms就行了。
CountdownID = BeginThread(Countdown(30)) //重新开启线程
YourFunctionID = BeginThread(YourFunction())
End If
Delay 100 //适当延时,减少CPU负担
Wend

Sub YourFunction() //定义你要执行的功能进程,这里我随便写一段代码
Finish = 0
For i = 1 To 20
Delay 500
MessageBox "12"
Next
Finish = 1
End Sub

Sub Countdown(t) //定义倒计时进程
TimeOver = 0
While t >= 0
Call Plugin.Msg.Tips("剩下" & t & "秒")
Delay 1000
t = t - 1
Wend
TimeOver = 1
End Sub

回答2:

当然要用到环境变量,写个例子希望对你有帮助。

Dimenv 主线程是否结束, 出错, t
主线程是否结束 = 0
出错 = 1 '模拟出错
t = timer '计时
BeginThread 主线程()
BeginThread 分线程()
Sub 主线程()
While 出错 <> 0
Delay 2000
出错 = 0
Wend
主线程是否结束 = 1
End Sub
Sub 分线程()
Delay 3000
While 主线程是否结束 = 1
主线程是否结束 = 0
Delay 3000
Wend
MsgBox timer-t
End Sub