Sven Lanoster
2017-01-02 18:53:51 UTC
Moin, moin.
procedure TmyThread.Execute;
var
xDings: IDings;
begin
CoInitialize(NIL);
try
xDings := CreateComObject(CLASS_DINGS) as IDings;
while not Terminated do
; // spannende sachen
finally
xDings := NIL;
CoUnitialize;
end;
end;
Ich debugge in Delphi und gehe mit [F8] die Zeilen durch. Bei
CreateComObject ist Schluss mit Debugging. Die folgenden Zeilen werden
nicht ausgeführt (das erwartete Ergebnis ist auch nicht da). Auch nicht
der finally-Block. Offenbar stellt der Thread die Ausführung an der
Stelle kommentarlos ein.
Achja, die ersten paar Mal, bei denen dieser Thread erzeugt wird,
arbeitet alles wie gewünscht. Aber wenn dann fünf Minuten (oder so) Ruhe
ist und dann ein neuer Thread erzeugt wird, passiert ab CreateComObject
gar nichts mehr, keine Meldung, nichts in den Logs, nichts in der
Windows-Ereignisanzeige.
Was muss man böses getan haben, um diesen Effekt zu erreichen?
Gruß,
Sven.
procedure TmyThread.Execute;
var
xDings: IDings;
begin
CoInitialize(NIL);
try
xDings := CreateComObject(CLASS_DINGS) as IDings;
while not Terminated do
; // spannende sachen
finally
xDings := NIL;
CoUnitialize;
end;
end;
Ich debugge in Delphi und gehe mit [F8] die Zeilen durch. Bei
CreateComObject ist Schluss mit Debugging. Die folgenden Zeilen werden
nicht ausgeführt (das erwartete Ergebnis ist auch nicht da). Auch nicht
der finally-Block. Offenbar stellt der Thread die Ausführung an der
Stelle kommentarlos ein.
Achja, die ersten paar Mal, bei denen dieser Thread erzeugt wird,
arbeitet alles wie gewünscht. Aber wenn dann fünf Minuten (oder so) Ruhe
ist und dann ein neuer Thread erzeugt wird, passiert ab CreateComObject
gar nichts mehr, keine Meldung, nichts in den Logs, nichts in der
Windows-Ereignisanzeige.
Was muss man böses getan haben, um diesen Effekt zu erreichen?
Gruß,
Sven.
--
Seltsam? Aber so steht es geschrieben...
Seltsam? Aber so steht es geschrieben...