2014-05-15 15 views
0

我Delphi7的应用也是一个自动化服务器,注册方式如下:是否调用在主线程中执行的自动化服务器?

TAutoObjectFactory.Create(ComServer, TMyServer, Class_App, 
    ciMultiInstance, tmSingle); 

在这种情况下也将tmSingle线程模型意味着到自动化服务器的所有调用的应用程序的主线程中执行?这意味着即使其他应用程序在同一时间使用自动化服务器的多个实例,我也不必调用同步并担心写入应用程序主窗体上的变量。 delphi对此有很少的帮助,我想确保我没有违反线程安全。

+0

http://docwiki.embarcadero.com/Libraries/XE2/en/System.Win.ComObj.TThreadingModel - 'tmSingle:COM序列化所有客户端请求。该对象不需要提供线程支持。 ' –

+0

将自动化服务器自己的线程(意味着自动化服务器的线程只创建一次)或应用程序的主线程中的所有客户端请求序列化?我在询问之前阅读了文档的这一部分,但这很不明确,这就是为什么我问这个问题。 – Steve

+5

对于客户端(进行COM调用的进程)和服务器(执行所述调用的进程),您似乎使用“应用程序”一词。你是一个进程内服务器(DLL)还是一个非进程服务器(EXE)?当你说“我的应用程序的主要形式”时,“应用程序”在这里指的是什么 - 服务器或客户端? –

回答

0

您的进程外服务器是它自己的进程。所以默认情况下它是单线程的。

即使产生它的进程可能是多线程的,也是如此。

相关问题