hallo COM - Gemeinde,
wenn ich mit einen Variant verwende um auf die Methoden eines
COM-Objekts zuzugreifen, und dem Variant am Ende
z.B.: <b>Unassigned</b> oder NULL zuweise, steigt der
MemUsage meines Prozesses im Task-Manager um <b>4k</b> bei jedem klick
auf den "Button1".
Für mich sieht das so aus, als würde ich etwas nicht freigeben.<br>
Ich habe im meiner Verzweiflung versucht, _Release aufzurufen, um den<br> Referenzzähler herunter zu setzen, war damit aber auch nicht erfolgreich.<br>
<p>
Was ist der Grund dafür?<br>
Mein COM Objekt (nicht wie im folgenden Bespiel MSWord)
wird unter umständen einige Male pro Sekunde aufgerufen,
was mit der Zeit zu einem gewissen Problem führen wird...
Ich verwende eigentlich ein anderes COM Objekt, aber mit dem häufig
verwendeten Word-Beispiel komme ich zu dem selben 4k-Anstieg
pro Aufruf:
<PRE>
procedure TForm1.Button1Click(Sender: TObject);
var
MSWord: Variant;
begin
MSWord := CreateOleObject('Word.Application');
MSWord.Quit;
MSWord := Unassigned;
end;
</PRE>
wenn ich mit einen Variant verwende um auf die Methoden eines
COM-Objekts zuzugreifen, und dem Variant am Ende
z.B.: <b>Unassigned</b> oder NULL zuweise, steigt der
MemUsage meines Prozesses im Task-Manager um <b>4k</b> bei jedem klick
auf den "Button1".
Für mich sieht das so aus, als würde ich etwas nicht freigeben.<br>
Ich habe im meiner Verzweiflung versucht, _Release aufzurufen, um den<br> Referenzzähler herunter zu setzen, war damit aber auch nicht erfolgreich.<br>
<p>
Was ist der Grund dafür?<br>
Mein COM Objekt (nicht wie im folgenden Bespiel MSWord)
wird unter umständen einige Male pro Sekunde aufgerufen,
was mit der Zeit zu einem gewissen Problem führen wird...
Ich verwende eigentlich ein anderes COM Objekt, aber mit dem häufig
verwendeten Word-Beispiel komme ich zu dem selben 4k-Anstieg
pro Aufruf:
<PRE>
procedure TForm1.Button1Click(Sender: TObject);
var
MSWord: Variant;
begin
MSWord := CreateOleObject('Word.Application');
MSWord.Quit;
MSWord := Unassigned;
end;
</PRE>
Comment