Multithreading 是否可以在IE11中运行多线程通信ActiveX代码?
我有带GUI的DelphiXe5可执行文件,它运行很少的线程,与服务器对话。我将其转换为IE11中的ActiveX组件。GUI可以工作,但线程似乎没有执行,或者与GUI运行在同一线程中。我是否应该更改此Delphi代码中的任何内容,或者不可能在IE11中运行多线程ActiveX代码Multithreading 是否可以在IE11中运行多线程通信ActiveX代码?,multithreading,delphi,internet-explorer,activex,Multithreading,Delphi,Internet Explorer,Activex,我有带GUI的DelphiXe5可执行文件,它运行很少的线程,与服务器对话。我将其转换为IE11中的ActiveX组件。GUI可以工作,但线程似乎没有执行,或者与GUI运行在同一线程中。我是否应该更改此Delphi代码中的任何内容,或者不可能在IE11中运行多线程ActiveX代码 procedure TMeetingForm.ActiveFormCreate(Sender: TObject); begin// child form that is a normal Delphi TForm.
procedure TMeetingForm.ActiveFormCreate(Sender: TObject);
begin// child form that is a normal Delphi TForm. Can be used as a normal VCL form and as an ActiveForm.
GUI := TGUI.Create( TComponent(Sender) );
GUI.Parent := Self;
GUI.Align := alClient;
GUI.BorderStyle := bsNone;
end;
initialization
TActiveFormFactory.Create(
ComServer,
TActiveFormControl,
TMeetingForm,
Class_MeetingForm,
0,
'',
OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
tmApartment);
end.
最可能的问题是在依赖于主VCL线程的线程中使用线程同步方法。如果将代码构建到COM对象中,则需要注意不要依赖任何此类方法(例如TThread.Synchronize、TThread.Queue等)。除此之外,在COM对象中运行线程是绝对可能的。针对这种情况的一个很好的测试是运行导入Delphi的ActiveX,因为VCL主线程的存在可能会导致它工作。