关于automation的问题:认真请教,

13037975985 2004-09-05 05:01:19
我在客户端往上登的时候,有时会出现automation 错误,远程服务器不存在或不可用的 提示,

检查dcomcnfg远程是配对的,有时缷了重装,会好,有时怎么都不行,》
...全文
286 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
donghaima 2004-09-09
  • 打赏
  • 举报
回复
我得分了吗
donghaima 2004-09-08
  • 打赏
  • 举报
回复
那你就用CreateObject()
13037975985 2004-09-07
  • 打赏
  • 举报
回复
如果我用Dim objX as new object
个做为全局在程序中用objx.clsdcom()语法则会出现"远程服务器不存在画不可用"
这是不是断了,应怎第解决
donghaima 2004-09-07
  • 打赏
  • 举报
回复
如果你本地有一个COM和远程的服务器上的COM是一个程序,你使用本地COM的时候CreateObject()就不要跟IP,但你如果想使用服务器上的COM,就应该跟IP.
这个前提是你注册本地上的COM,不是以DCOM的方式注册的.
如果一DCOM方式注册,则会在注册表中写下远程服务器的IP,这样,即使你使用CreateObject()不跟IP,他调用的也是远程的COM
donghaima 2004-09-07
  • 打赏
  • 举报
回复
你这次能够成功,下一次不一定能成功,这不单单取决与你的程序如何写,还取决服务器当时的状态和性能.再则,你先用CreateObject(),再用new,好象并没有什么联系,而且我认为用两种方法调用并不一定是个可取的方法.建议你应该用错误捕捉和重试的方法.
online 2004-09-07
  • 打赏
  • 举报
回复
服务端是组件吗?
注册到com+组件管理器中

dcom服务器上docm,一般是指客户机

两种方法都能激活,都是通过注册表操作的
13037975985 2004-09-07
  • 打赏
  • 举报
回复
还有一个问题,比如在dcom服务器上docm并未启起来,在客户端用dim  objX as new object能激活服务端的dcom吗我知道
Set objX =CreateObject("MainApp.MyImage")是可以的 所以 客户端在调用类时有一次CreateObject("MainApp.MyImage"),以后用dim  objX as new object 方式,对不对请指教
yelang771 2004-09-07
  • 打赏
  • 举报
回复
up
online 2004-09-07
  • 打赏
  • 举报
回复
不加ip,dcomcnfg配置的时候会在注册表中写入远程服务器的地址

Dim objX as object
Set objX =CreateObject("MainApp.MyImage")

参考
http://community.csdn.net/Expert/topic/3170/3170015.xml?temp=.4534113
online 2004-09-07
  • 打赏
  • 举报
回复
createobject与new 本质的不同。
createobject与new 的关键区别就是声明后系统对资源的控制权不一样。
createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。
new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。
---------------------------------------------------------------

1. new 为对象的前期绑定,在建立对象时会通过scm进行对象管理,此方法在编译时慢,运行时快
2.createobject为对象的后期绑定,在建立对象是不通过scm进行对象管理,适应脚本应用程序,客户端或分布式程序,在编译时快,运行所占时间比较慢
3.所有对象都要set object=nothing
4.尽量以dll库建立对象,而不以.ocx建立对象,以减少所占资源
---------------------------------------------------------------
donghaima 2004-09-07
  • 打赏
  • 举报
回复
应该是一样的,可能区别在于内存的调度上面.你用的方法是引用,算事前绑定吧
13037975985 2004-09-07
  • 打赏
  • 举报
回复
还有一个问题,我是用dcom方式注册的,在注册表中有远程ip 我用Createobject()和用set objX =new objx(or Dim objX as New MainApp.MyImage)是不是一样的,
13037975985 2004-09-06
  • 打赏
  • 举报
回复

Dim objX as New MainApp.MyImage

CreateObject("MainApp.MyImage",IP)
===================================

和Dim objX as New MainApp.MyImage
==================================

有什么区别,前者可跟IP而后面的没法跟,能说一说吧,通常哪种格式更好一些呢
vb远程注册文件到底有什么用呢我说的是 xx.VBR是在system32/xx.vbr
阿泰 2004-09-06
  • 打赏
  • 举报
回复
>>为什么不在CreateObject("MainApp.MyImage")后跟上ip地址呢,我是在广域网中,难道是类在本
地安装后自动注册后根据dcomcnfg中设的ip 地址会自动调用吗?

这个不会,呵呵,确实是需要指定IP的
因为我们在应用中对CreateObject进行了封装,用的多了,竟然没有去想
我现在是把IP写在注册表里,
出现该问题可能是因为一段时间没有请求后服务器端已经释放了你释放的资源
我们在做的时候,一般是采取连接后马上断开的方式,下个应用再重新连接
而不是保持一个连接。所以这样的问题,好象没有遇到。
13037975985 2004-09-06
  • 打赏
  • 举报
回复
我的程序是在客户端安装后一有时会出现"远程服务器不存在或不可用的错误,"但我明明上去了,我想是什么原因是断了,

你上面第二句是不是Dim objX as New MainApp.MyImage
13037975985 2004-09-06
  • 打赏
  • 举报
回复
你说的
客户端上一般的定义方式为
Dim objX as MainApp.MyImage
Set objX =CreateObject("MainApp.MyImage")
为什么不在CreateObject("MainApp.MyImage")后跟上ip地址呢,我是在广域网中,难道是类在本
地安装后自动注册后根据dcomcnfg中设的ip 地址会自动调用吗?
在线等
yijiansong 2004-09-06
  • 打赏
  • 举报
回复
捕捉重试
donghaima 2004-09-06
  • 打赏
  • 举报
回复
如果是用COM特别是DCOM,应该有错误捕捉和重试机制,比如客户端会出现429,服务端是10110(大约)的错误,内容是服务器没有在规定时间内注册.这种错误通常发生在服务器异常繁忙的时候,没有办法避免,只能捕捉重试,通常重试就可以了.
阿泰 2004-09-06
  • 打赏
  • 举报
回复
类的初始化是在类中实现后由类启动时自动初始化的
不需要在调用时初始化

客户端上一般的定义方式为
Dim objX as MainApp.MyImage
Set objX =CreateObject("MainApp.MyImage")

Dim objX as MainApp.MyImage

如果是ASP中
Set objX =Server.CreateObject("MainApp.MyImage")
13037975985 2004-09-06
  • 打赏
  • 举报
回复
我这个是有些是好的,有些是不对的,请教另一个问题:在客户端调用dcom时的常规语法是怎样的,
是不是要先初始化类,后用
dim rs
rs=coinitalize(0)
Set mOBJ = GetObject(, "MainApp.MyImage")
counitialize
加载更多回复(1)

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧