Delphi 对自动化服务器的调用是在主线程中执行的吗?

Delphi 对自动化服务器的调用是在主线程中执行的吗?,delphi,com,automation,delphi-7,ole,Delphi,Com,Automation,Delphi 7,Ole,我的Delphi7应用程序也是一个自动化服务器,通过以下方式注册: TAutoObjectFactory.Create(ComServer, TMyServer, Class_App, ciMultiInstance, tmSingle); 在这种情况下,tmSingle线程模型是否意味着对自动化服务器的所有调用都在应用程序的主线程中执行?这意味着,即使其他应用程序同时使用我的自动化服务器的多个实例,我也不必调用synchronize并担心写入应用程序主窗体上的变量?delphi帮

我的Delphi7应用程序也是一个自动化服务器,通过以下方式注册:

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

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

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


即使生成它的进程可能是多线程的,这也会保持不变。

--
tmSingle:COM序列化所有客户端请求。对象不需要提供线程支持序列化自动化服务器自身线程(意味着自动化服务器的线程只创建一次)内或应用程序主线程内的所有客户端请求?在提问之前,我阅读了文档的这一部分,但还不清楚,这就是我提问的原因。您似乎在客户端(进行COM调用的进程)和服务器(执行所述调用的进程)中都使用了“应用程序”一词。您的是进程内服务器(DLL)还是进程外服务器(EXE)?当你说“我的应用程序的主窗体”时,“应用程序”指的是什么?服务器还是客户端?它是一个EXE。因此,exe中有应用程序和自动化服务器,自动化服务器希望调用应用程序的主窗体,而多个程序可能正在使用自动化服务器。与其在评论中进行讨论,不如提问,让问题更清楚,并澄清术语。您似乎将服务器、客户机和应用程序随机地交替混合在一起,而事实并非如此。