通过Dcom编程实现聊天功能,这样为什么不行??? 高手请进(150分),高手都到哪里去了。 (150分)

  • 主题发起人 主题发起人 yeath
  • 开始时间 开始时间
http://service.lonetear.com/delphi/dispdoc.asp?id=199
 
找到原因了,难道TComponentFactory.Create(ComServer, TEasyDcomServer,
Class_EasyDcomServer, ciMultiInstance, tmApartment);不行???
一定要改成tmBoth线程模式????

这是为什么??? 有谁能回答一下吗???
 
大家享受吧!!!这个问题没人回答了。
 
因为你用的是ciMultiInstance, tmApartment这种线程模式,所以你在调用线程类的方法时
有可能遇到问题,需要对接口进行处理才能传递,当你把线程模式改成tmBoth之后,当然是
可以随便调了,但是你要注意线程同步及对象保护。
 
to proman:
怎么实现??? 贴代码出来,分可以另外加.
 
这里有问题
procedure TEasyDcomServer.Connect(vClient: OleVariant);
begin
[red]Form1.mdata := self;[/red]
CallBackTemp := vClient;
end;
当你采用MultiInstance, Apartment模式的时候,有一个客户端连进来就会产生一个
远程数据模块(TEasyDcomServer)的实例,所以你要用一个TList对象管理这些远程
数据模块.在远程数据模块的OnCreate事件增加TList对象,OnDestroy减少TList对象.
 
to xeen:
还是没用,告诉我你的Email,我把代码发给你好了。多谢!
 
xeen兄:
有没有帮我看那个程序,多谢!!!!
 
to yeath,没收到啊.
 
收到,用全局接口表可以解决问题.看话题254393。
改完的程序我发给你了.
 
多谢XEEN兄帮忙。
来取分吧!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1493329
 
给我也发一份吧,我也碰到这样的问题
zhongqj@sohu.com
 
后退
顶部