明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 365|回复: 0

[运行时] cad.net 用户配置设计(看门狗方案)

[复制链接]
发表于 2025-3-22 21:21:02 | 显示全部楼层 |阅读模式
本帖最后由 你有种再说一遍 于 2025-3-25 16:03 编辑

发现很多人设计错了.
箭头哥就把配置都分拆写成多个静态变量,
然后说:这是进程级别的...
有些人用了"用户文件夹"装不同版本的配置.
他们都少想了一点,只要多想一点就发现不简单了.

我首先提问:
我要负责两间公司的制图,它们存在不一样的制图标准.
在同一个CAD同时打开两间公司的dwg,
你可以用文件路径等等信息区分两家公司,
然后ctk命令插入图框/qt画墙体,
要自动切换两家公司的标准,不能用手动切换,
因为可能造成忘记切换,乱序修改非常容易出错.

怎么实现这个需求?
(说不需要的只能说本领没学到家就在发表看法了)
如果实现这个需求是不是表示配置类实际上是动态的?
因为我还可以关闭dwg时候释放掉配置类资源.

实现起来其实非常简单.
有看过IFox事务栈的都知道:
trMap<Database, DBTrans>

桌子官方插件Civil也有类似的结构:
var civilDoc = CivilApplication.GetCivilDocument(db);

为什么我们都不约而同采取字典抽象一层缓存.
就是因为可以不同配置同时使用.
这个配置只需要:
configMap<user, config>

1,在cad文档打开事件,
读取路径的公司名作为文档的"用户名"配置,
有多个相同用户就计数+1,
并制作看门狗,计数不为0就定期续时间.

2,在cad文档关闭事件,
只需要把计数-1.
当计数为0的就表示看门狗不再续期,以实现惰性释放,
避免关闭了又开,造成频繁读取配置.

这样实现的话,就不会出现使用配置时候缺失"用户名",
否则用户就会感受到首次命令卡顿.

3,配置文件的json/xml/dwg被跨进程更改之后
还可以通过文件监控实现更新缓存.

完,xx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-3-30 01:10 , Processed in 0.175206 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表