客户端连接,服务端就create(50)

  • 主题发起人 主题发起人 delphibbsme
  • 开始时间 开始时间
D

delphibbsme

Unregistered / Unconfirmed
GUEST, unregistred user!
用的是socketconnection我试了一下,只要SocketConnection1.Connected := true;,服务端的MainForm就create一次
 
这种现象只在scktsrvr.exe注册为服务时出现
 
Delphi中MIDAS线程模型   (1)Single   代表所产生的In-Process COM程序是一个单一线程的程序,一次只能接收一个client发出来的request,由于是循环的操作,所以不会有多任务同时进行的问题,你的COM程序不需要编写多任    务处理的部分.   (2)Apartment   代表每一个Remote Data Module所产生的instance一次只能处理一个前台发出的request,可是如果同时创建多个In-Process COM程序,那么每个COM程序都会有一个线程来处理,每个   instance所处理的数据是安全的,可是你必须防止一些共享变量的冲突.   (3)Free   该线程模式可以让Remote Data Module产生的每个instance通过各自的线程处理每个前台发出的request,所以Remote Data Moudle本身必须采用多线程的程序写法,你必须保护每   个instance所处理的数据区域不会互相冲突..当使用ADO数据集时,推荐使用Free模型.   (4)Both   与Free相同,除了所有对应前台界面的callback是连续的以外.   (5)Neutral   此种模式允许多个前台程序在同一个时间以不同的线程来调用Remote Data Module,不过COM对象必须确保不会有前台程序调用的冲突,你要确定每个线程在访问全局变量及实例数据时,不    会发生任何冲突.这个模式只适用在COM+.明白了没有
 
不懂。业余水平,看不懂这些专业词汇。能否用白话解释一下?为什么当且仅当sckrsrvr.exe注册为服务时,只要client一连接,不管server是否在运行,server都会create一次。而在sckrsrvr.exe不注册为服务,只在server没有运行时才create。
 
白话一点就是在你服务端代码里查找包含“TComponentFactory.Creat”的地方,该函数的最后一个参数更改为 tmApartment即可。
 
我一开始就是使用默认值Apartment
 
貌似没有人懂,但不懂装懂的倒是有啊。
 
后退
顶部