以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  异步执行的终止  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192742)

--  作者:newsun2k
--  发布时间:2024/7/18 10:56:00
--  异步执行的终止

关于异步执行,大概代码如下,我想点按钮终止异步执行,好像不起作用。麻烦指导一下。


Public Total As Integer

public pauseflag as boolean 

首先增加一个名为"AddTotal"的函数,代码为:

if pauseflag = false then return nothing

For i As Integer = 1 To 100
    
Total = Total + 1


Next

然后在命令窗口用AsyncExecute方法异步执行此函数100次:

Total = 0

pauseflag = true
For 
i As Integer = 1 To 100
    
Functions.AsyncExecute("AddTotal")
Next

Sleep 
(2000\'等待2秒,待所有子线程线程执行完毕
Return 
Total


然后我在其他的地方设置一个按钮,点按钮时执行:pauseflag = false


--  作者:有点蓝
--  发布时间:2024/7/18 11:28:00
--  
把累加改大一点把,1加到100不到1毫秒的事,等你点按钮都已经执行完毕了

试试(改大后可能会很慢,注意新建一个项目测试,有点耐心哈)

For i As Integer = 1 To 100000

另外不应该在异步里直接操作全局变量,应该通过同步函数处理,不然全局变量的值是有问题的:http://www.foxtable.com/mobilehelp/topics/3270.htm


--  作者:newsun2k
--  发布时间:2024/7/19 13:23:00
--  
没理解。
然后我在其他的地方设置一个按钮,点按钮时执行:pauseflag = false
这里,我改成同步函数处理?

--  作者:有点蓝
--  发布时间:2024/7/19 13:48:00
--  
和按钮没有关系,是在异步里对Total这个变量累加的时候,必须使用同步函数