VB 编程,关于毫时代码,怎么样才能这段代码不造成程序不响应
- 提问者网友:心裂忍耐
- 2021-05-11 10:17
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer, d As Integer
Dim e As Integer, f As Integer, g As Integer
For a = 1 To 48 Step 2
Sleep 10
For b = 1 To 48 Step 2
Sleep 10
For c = 1 To 48 Step 2
Sleep 10
For d = 1 To 48 Step 2
Sleep 10
For e = 1 To 48 Step 2
Sleep 10
For f = 1 To 48 Step 2
Sleep 10
For g = 1 To 48 Step 2
If a + b + c + d + e + f + g = 48 Then
Print a; b; c; d; e; f; g
End If
Next g
Next f
Next e
Next d
Next c
Next b
Next a
End Sub
- 二级知识专家网友:末路丶一枝花
- 2021-05-11 10:59
DoEvents是把控制权交给CPU
楼主的循环加了SLEEP
应该要算蛮久
如果要程序响应就要涉及多线程技术
提供几个多线程用的API
'创建线程API
'此API经过改造,lpThreadAttributes改为Any型,lpStartAddress改为传值引用:
'因为函数入口地址是由形参变量传递,如果用传址那将传递形参变量的地址而不是函数的入口地址
' 参数dwStackSize为应用程序堆栈大小,lpStartAddress为函数入口地址
Private Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, LpthreadId As Long) As Long
'终止线程API
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
'激活线程API,参数hThread为CreateThread创建的线程句柄
Private Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long
'挂起线程API
Private Declare Function SuspendThread Lib "kernel32" (ByVal hThread As Long) As Long
至于详细的代码我建议你百度一下,很多例子
- 1楼网友:狙击你的心
- 2021-05-11 17:22
FOR 改成DO 虽然有些慢
- 2楼网友:修女的自白
- 2021-05-11 16:45
- 3楼网友:恕我颓废
- 2021-05-11 15:07
将Sleep 10改为DoEvents程序不会无响应,不过速度会很慢。
- 4楼网友:甜野猫
- 2021-05-11 14:00
多线程
- 5楼网友:无字情书
- 2021-05-11 13:07
48^7 = 587068342272,还加Sleep,你这程序什么时候才能出结果啊?过程需要优化啊。
不造成程序不响应,是需要开线程的,让线程来计算。不要用Sleep。
- 6楼网友:冷态度
- 2021-05-11 12:28