2014-05-15 30 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

您的進程外服務器是它自己的進程。所以默認情況下它是單線程的。

即使產生它的進程可能是多線程的,也是如此。

相關問題