Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 是否可以在IE11中运行多线程通信ActiveX代码?_Multithreading_Delphi_Internet Explorer_Activex - Fatal编程技术网

Multithreading 是否可以在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.

我有带GUI的DelphiXe5可执行文件,它运行很少的线程,与服务器对话。我将其转换为IE11中的ActiveX组件。GUI可以工作,但线程似乎没有执行,或者与GUI运行在同一线程中。我是否应该更改此Delphi代码中的任何内容,或者不可能在IE11中运行多线程ActiveX代码

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主线程的存在可能会导致它工作。