AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verständnisproblem / Threadproblem ?
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisproblem / Threadproblem ?

Ein Thema von th_bone · begonnen am 12. Dez 2005 · letzter Beitrag vom 20. Dez 2005
 
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Verständnisproblem / Threadproblem ?

  Alt 20. Dez 2005, 08:55
CoInitialize und CoUnInitialize müssen im Kontext des Threads aufgerufen werden.
Also sind der Konstruktor und Destruktor tabu, da diese im Kontext des Hauptthreads aufgerufen werden.
Deshalb muss das innerhalb von [TThread].Execute stattfinden:
Delphi-Quellcode:
procedure TCOMThread.Execute;
begin
   CoInitialize(nil);
   try
      // hier findet die eigentliche Arbeit statt

   finally
      CoUninitialize;
   end;
end;
Jetzt muss man aber noch etwas aufpassen!!
Wenn ein Interface-Pointer noch "lebt", nachdem CoUninitialize aufgerufen wurde, dann liegt ein Fehler vor.
Deshalb wird die "eigentliche Arbeit" ausgelagert:
Delphi-Quellcode:
procedure TCOMThread.InnerExecute;
var
   a,b, c : IUnknown;
begin
   // hier findet die eigentliche Arbeit statt
end;

procedure TApartmentThread.Execute;
begin
   CoInitialize(nil);
   try
      InnerExecute;
   finally
      CoUninitialize;
   end;
end;
Andreas
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz