起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: kd_xjx

【搞定】Invokemethod调用方法的时候,提示找不到方法! 是版本问题吗?**

[复制链接]
发表于 2007-12-10 08:36:48 | 显示全部楼层
好,谢谢楼主共享方法,

不过,我们1楼连接的帖子有说哦

3 在TInit.Create函数中,创建对象实例,并注册这个对象
//创建对象实例
  FGetOperatorID := TGetOperatorID.Create;
//注册这个对象
  BizRtSrvr.BusinessRuntimeServer.RegisterMethod(FGetOperatorID);

4 在 TInit.Destroy 中,反注册这个对象,释放对象
//反注册对象
  BizRtSrvr.BusinessRuntimeServer.UnregisterMethod(FGetOperatorID);
//释放对象
  FGetOperatorID.Free;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-10 10:09:18 | 显示全部楼层
一楼连接的贴子中是在 Create 和 Destroy中进行注册和卸载的 。这是不对的。应当在 Init 方法中进行处理 ! 不知道明白我的意思没有,你们的那个贴子是错的。
回复 支持 反对

使用道具 举报

发表于 2007-12-10 10:22:27 | 显示全部楼层
哦,知道了
回复 支持 反对

使用道具 举报

发表于 2007-12-10 11:57:43 | 显示全部楼层
非常感谢楼主的发现。更感谢楼主提供的解决方法。

补充说明一下:

Invokemethod此方法主要用来做系统集成。由于在X3X.Run的时候才调用TInit.Create来创建对象TInit,在X3X.Run结束时就已经调用了TInit.Destroy来释放对象TInit了。所以在Create里面注册和Destroy里面注销的方法都是要在X3X.Run运行之后,而X3X.Run调用结束之前来调用的。一般用于Web应用集成。在X3X.Run起来之后,在其他系统中通过invokemethod和X3系统来做通讯。

由于在X3X.Init里面调用了静态方法TInit.Init,所以如果需要在Run之前或之后再调用的话(如同本贴中就是在Run方法结束之后调用的),可以在TInit.init方法里面注册和TInit.Uninit里面来释放。当然,这时也需要在X3X.Init之后才能调用。(TInit.Uninit是由系统自动调用的,不需要使用者考虑。)
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-2 01:03 , Processed in 0.040089 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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