
VB中的循环太大了,老是未响应....
在VB中在Form1完成设置后,Form1会进行隐藏,Form2显示。但是Form1中会产生一个比较大的数组需要进行排序,排序后的数组在Form2中才用到。排序过程循环较...
在VB中在Form1完成设置后,Form1会进行隐藏,Form2显示。但是Form1中会产生一个比较大的数组需要进行排序,排序后的数组在Form2中才用到。排序过程循环较大,老是不响应。要等比较久才显示Form2窗体.....该怎么处理????
目前我是把排序放在点击出现Form1中的“完成”按钮事件中。 展开
目前我是把排序放在点击出现Form1中的“完成”按钮事件中。 展开
展开全部
DoEvents 函数
转让控制权,以便让操作系统处理其它的事件。
语法
DoEvents( )
说明
DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。
DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。
DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。
小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。
DoEvents 函数示例
下列示例在循环中使用 DoEvents 函数,每当循环完成 1000 次时,将执行让给操作系统。DoEvents 返回仅当主应用程序是 Visual Basic时,打开的窗体个数。
' 创建一个变量来保存加载的 Visual Basic 可见窗体的个数。
Dim I, OpenForms
For I = 1 To 150000 ' 循环开始。
If I Mod 1000 = 0 Then ' 如果循环一已完成了 1000 次。
OpenForms = DoEvents ' 将执行让给操作系统。
End If
Next I ' 将循环计数器加一。
转让控制权,以便让操作系统处理其它的事件。
语法
DoEvents( )
说明
DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。
DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。
DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。
小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。
DoEvents 函数示例
下列示例在循环中使用 DoEvents 函数,每当循环完成 1000 次时,将执行让给操作系统。DoEvents 返回仅当主应用程序是 Visual Basic时,打开的窗体个数。
' 创建一个变量来保存加载的 Visual Basic 可见窗体的个数。
Dim I, OpenForms
For I = 1 To 150000 ' 循环开始。
If I Mod 1000 = 0 Then ' 如果循环一已完成了 1000 次。
OpenForms = DoEvents ' 将执行让给操作系统。
End If
Next I ' 将循环计数器加一。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环中加入doevents就可以了
实在不成就用timer控件代替循环
实在不成就用timer控件代替循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form2.show 放到排序前边行不?
排序过程中再加入
doevents
排序过程中再加入
doevents
更多追问追答
追问
form2.show 我是把放在排序前面了,也在排序循环中加入了doevents,这样是没出现未响应了,但是在Form2中用到数组的地方,没有进行排序了。该数组是定义为public型的。就是没有进行排序啊.....这个又怎么处理???
追答
打开窗口就用?那只能提高运算效率了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
中间可以等待一下,处理不过来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询