子程序是否是只在启用时读取一遍输入的变量呢?

使用问题 · 117 次浏览
白云朔 创建于 2024-10-09 18:47

我用多线程开启了两条线程

A线程是一个自定义操作窗,可以通过变量{结束}控制B线程循环的停止

B线程是一个循环,用于获取数据,当{结束}为true时,停止循环

在B没有被封装到子程序时,工作正常。但是当我把B线程封装为了子程序之后,就出现了A线程中更新{结束}的值,但B线程的循环依然没有停止的情况。这是因为子程序只会在启用的时候读取一次输入的变量吗?

如果在子程序运行途中,该变量在子程序外部被其他线程更新,子程序不会重新请求一次该变量在子程序外部的值吗?

如果希望子程序内部每次调用该变量时,都请求一遍外部值,应该如何操作呢?


回复内容
CL 2024-10-09 18:58
#1

子程序里的变量是在子程序开始运行的时候赋值的,是独立的拷贝,后面不会从主程序读取变量。

可以在表达式里使用 $= _context.GetRootContext().GetVarValue("变量名") 读取主程序变量。 参考:表达式高级话题 - Quicker

回复主贴