以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  一个异步函数的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142383)

--  作者:304376480
--  发布时间:2019/10/25 11:39:00
--  一个异步函数的问题
老师,您好!请看示例:

问题1:增加一个名为"Task"的函数,代码为:tables("表A").current("逻辑列") = true
如果 表A 的 DataColChanging 和 DataColChanged 事件中,当“逻辑列”= true 时会执行一段代码,
那么,执行Functions.AsyncExecute("Task")  的话,
DataColChanging 和 DataColChanged 事件中执行的代码是在主线程还是在子线程中?

问题2:如果,"Task"的函数,代码为:forms("窗口1").close
执行Functions.AsyncExecute("Task"
那么,事件 AfterClose 和 BeforeClose 中执行的代码是在主线程还是子线程中?

--  作者:有点蓝
--  发布时间:2019/10/25 11:47:00
--  
首先上面所有的用法都有严重的问题,原因:http://www.foxtable.com/mobilehelp/topics/277.htm

然后我们抛开逻辑谈代码

Functions.AsyncExecute("Task") 执行这一句代码的时候,肯定是在主线程的。接着Task函数里面的代码会在子线程中执行

--  作者:304376480
--  发布时间:2019/10/25 11:59:00
--  
这一行代 tables("表A").current("逻辑列") = true 会在子线程中执行,

但触发的 DataColChanged 事件里的代码,是主线程还是子线程运行?

--  作者:有点蓝
--  发布时间:2019/10/25 12:01:00
--  
不管是表事件,项目事件还是窗口控件事件都是在主线程运行的