Delphi.exe COM服务器启动异常

Delphi.exe COM服务器启动异常,delphi,com,Delphi,Com,我有一个用Delphi西雅图编写的Win32.exe,它实现了一个函数的COM接口。 如果我从程序本身内部调用CreateOleObject(),服务器的行为方式让我感到困惑。 实例模型设置为ciSingleInstance,因此我希望在每次调用时创建一个新实例(假设以前的实例仍在运行) 实际发生的情况是,第一个调用不创建新实例,但第二个调用创建新实例。 如果第一个调用运行完成,则第二个实例将再次创建一个新实例,即使程序应返回其默认状态 我该怎么办 a) 在第一次调用时强制创建第二个实例,或 b

我有一个用Delphi西雅图编写的Win32.exe,它实现了一个函数的COM接口。
如果我从程序本身内部调用CreateOleObject(),服务器的行为方式让我感到困惑。
实例模型设置为
ciSingleInstance
,因此我希望在每次调用时创建一个新实例(假设以前的实例仍在运行)

实际发生的情况是,第一个调用不创建新实例,但第二个调用创建新实例。
如果第一个调用运行完成,则第二个实例将再次创建一个新实例,即使程序应返回其默认状态

我该怎么办

a) 在第一次调用时强制创建第二个实例,或

b) 将程序返回到真正的默认状态,以便在多次运行完成后不会启动第二个实例。

ciSingleInstance
被传递给可能导致此不必要行为的内部调用。

默认状态为“在此进程的生存期内,只接受一个
CoCreateInstance
调用”. 有鉴于此,您的程序似乎正在按预期工作。您可能通过
CoCreateInstance
以外的方式运行它,因此它仍然只等待它的一个
CoCreateInstance
——但一旦它得到它,它就不会再需要任何时间了。“每个进程生命周期一次”解释了这一点,意味着如果我调用CreateOleObject()一次,如果程序没有被自动化,回答我的第一个问题。非常感谢。