Foxtable(狐表)用户栏目专家坐堂 → 异步执行的终止


  共有1523人关注过本帖树形打印复制链接

主题:异步执行的终止

帅哥哟,离线,有人找我吗?
newsun2k
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1501 积分:11195 威望:0 精华:0 注册:2014/8/13 16:19:00
异步执行的终止  发帖心情 Post By: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


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1501 积分:11195 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2024/7/19 13:23:00 [只看该作者]

没理解。
然后我在其他的地方设置一个按钮,点按钮时执行:pauseflag = false
这里,我改成同步函数处理?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/19 13:48:00 [只看该作者]

和按钮没有关系,是在异步里对Total这个变量累加的时候,必须使用同步函数

 回到顶部