TC官方合作论坛

标题: 求助对象释放问题? [打印本页]

作者: chihoutam    时间: 2015-5-28 17:26
标题: 求助对象释放问题?
本帖最后由 chihoutam 于 2015-5-28 17:28 编辑

我在写大漠注册方法的时候遇到一个问题:
系统中已经有注册大漠的话就判断版本号,如果不符合要求就卸载插件重新注册
可是重新注册成功之后.创建一个新对象 输出的版本号还是旧的
但其实系统中已经注册好新的了.为什么会这样呢?

当然你可以叫我一上来就重新注册新版本的dm..效率也不会低多少..可是我只想知道为什么哈

请看源码:
  1. function reg()
  2.     if (isregister("dm.dmsoft"))
  3.         var dm = com("dm.dmsoft")
  4.                 var ver = dm.ver()
  5.         traceprint ("系统:" & ver)
  6.         if (ver=="5.1423")
  7.             return 1
  8.         else
  9.             var ret = regdll("dm.dll",false) //卸载插件
  10.             //Set dm =nothing 释放对象
  11.         end
  12.     end
  13.     var dmPath = getrcpath("rc:dm.dll")
  14.     var ret = regdll(dmPath,true)
  15.     var haha = com("dm.dmsoft")
  16.     var nver = haha.ver()
  17.     traceprint("新注册:"& nver)
  18. end
复制代码

输出>> "系统:5.1417"
输出>> "新注册:5.1417"

TC版本号: 5.1

作者: 爱上老公    时间: 2015-5-28 17:45
3楼应该知道,让3楼回答
作者: cjxdn    时间: 2015-5-28 17:57
4楼应该明白,让4楼回答
作者: jimye0526    时间: 2015-5-28 18:28
卸载后关闭程序再运行,这就跟你注册了 创建对象后 再卸载后,对象不会失效一个原理,因为你这个进程已经是使用旧版本dll,已经在你的进程内存中了,不想重新启动,你可以试着手动卸载进程中的dll试试
作者: 18667006365    时间: 2015-5-28 18:29
5楼应该明白,让5楼回答(因为俺看不懂英文,也不解释英文)
作者: 这论坛不错    时间: 2015-5-28 19:56
本帖最后由 这论坛不错 于 2015-5-28 20:01 编辑

可能是旧的版本正在使用中,新的就没有注册成功~
作者: chihoutam    时间: 2015-5-28 22:08
这论坛不错 发表于 2015-5-28 19:56
可能是旧的版本正在使用中,新的就没有注册成功~

已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次创建对象的时候TC 吧 dm.soft 放到内存了..所以之后怎么创建都是旧版...关闭程序把内存释放才能用新的dm.dll 创建
作者: 这论坛不错    时间: 2015-5-28 22:20
chihoutam 发表于 2015-5-28 22:08
已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次 ...

如果系统的是旧版的dm,你用新版的dm注册了的话,注册完要好像是要重开脚本才会生效
作者: 这论坛不错    时间: 2015-5-28 22:20
chihoutam 发表于 2015-5-28 22:08
已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次 ...

如果系统的是旧版的dm,你用新版的dm注册了的话,注册完要好像是要重开脚本才会生效
作者: chihoutam    时间: 2015-5-28 22:25
jimye0526 发表于 2015-5-28 18:28
卸载后关闭程序再运行,这就跟你注册了 创建对象后 再卸载后,对象不会失效一个原理,因为你这个进程已经是 ...

不想重启,如何手动卸载进程中的dll 呢?
作者: 这论坛不错    时间: 2015-5-28 22:25
chihoutam 发表于 2015-5-28 22:08
已经注册成功了哦...
因为如果我关闭脚本 再启动就不会重新注册了......直接输出新的版本号
可能是第一次 ...

另外,var ret = regdll("dm.dll",false)这行应该不会生效,没有指定插件的路径,卸载应该是失败的
作者: chihoutam    时间: 2015-5-28 22:27
这论坛不错 发表于 2015-5-28 22:25
另外,var ret = regdll("dm.dll",false)这行应该不会生效,没有指定插件的路径,卸载应该是失败的 ...

对~写的时候不知道怎么获取旧版dm.dll路径 所以留了一个未完成哈~ 果然细心~
作者: chihoutam    时间: 2015-6-1 12:07
无聊顶一下.看看有没有办法




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1