Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > главный поток и COINIT_MULTITHREADED


Автор: namervasek 7.9.2012, 11:27
Всем здрасте.
Попытался перевести главный поток проги в МТА таким образом:

Код

  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TServerForm, ServerForm);
  Application.Run;


результата это не дало... нашел причину:

Код

constructor TApplication.Create(AOwner: TComponent);
var
{$IF DEFINED(CLR)}
  SB: System.Text.StringBuilder;
  P: Integer;
  C: Char;
{$ELSE}
  P: PChar;
  ModuleName: array[0..255] of Char;
{$IFEND}
begin
  inherited Create(AOwner);
  if not IsLibrary then
    FNeedToUninitialize := Succeeded(OleInitialize(nil)); // вот эта бяка



Соотвествено решение которое сразу пришло в голову сделать так
Код

  CoUninitialize;
  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TServerForm, ServerForm);
  Application.Run;


Все вроде бы хорошо и вроде все работает как надо, но меня интересует вопрос: не сломается ли VCL от такого решения? Подскажите пожалуста?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)