关于变量的回写和能否在辅助C#代码中直接修改动作变量的问题

使用问题 · 30 次浏览
碎片哒哟 创建于 1天23小时前

在使用数据映射时遇到一个数据回写的问题。

 

场景基础:{qkText}开启了“保存变量的值”,自定义窗口中数据映射winText:{qkText},在辅助代码修改dataContext["winText"]。

 

场景一:窗口正常手动关闭,或在“显示窗口”后的后续代码中使用自定义窗口的“关闭窗口”,winText的值就会赋值给qkText,这里没有问题。

 

场景二:开启允许同时运行多个实例,自定义窗口的“关闭窗口”在“显示窗口”之前,即运行第二个实例时,会先关闭第一个实例的自定义窗口,此时回写就会失败。(感觉理解为,开启第二实例后,第二实例qk变量的值就通过读本地的值确定了,这时关闭第一个实例回写的新值会写进本地却也无法被第二实例用上了,而第二实例关掉后又再次写了个旧值回本地)

 

所以,是否能像运行C#代码一样context.SetVarValue直接修改动作变量而不是等窗口关闭?或者有其他的解题思路?

 

最没办法的办法大抵就是自行读写本地文本文件了。

碎片哒哟 最后更新于 2025/8/18

回复内容
CL 1天18小时前
#1

同时运行多个实例时,不宜使用“保存变量的值”,会产生冲突。

这个的使用场景是什么呢? 

有可能自定义窗口还在显示的时候动作已经结束了(在不等待关闭的情况下),所以自定义窗口通常应该具有独立运行能力。

碎片哒哟 回复 CL 1天6小时前 :

感谢解答。

使用场景是,窗口并非总是处于可见状态,所以打算通过允许多个实例,使“运行动作的行为”变得支持“窗口的开或关”。如果多个实例与“保存变量的值”会冲突的话,那大概就只有这几种思路:

1.不允许多个实例,窗口等待关闭,通过使用托盘来提供一个关闭窗口的选项。

2.不允许在窗口运行时修改需要保存的变量。

3.不使用“保存变量的值”而是读写本地文本文件。

回复主贴