In unserer D2007-Anwendung verwenden wir einen Webservice, auf den mit einem THTTPRIO-Objekt zugegriffen wird. Wenn das TDatamodule, das das THTTPRIO-Objekt enthält, zerstört wird, tritt eine Zugriffsverletzung auf.OpToSoapDomComv.TRefCache.FNodes enthält Verweise auf nicht vorhandene XMLNodes
Dieses AV angehoben wird, wenn der TSoapDOMConvert befreit wird, was wiederum ausführt:
TRefCache(RefMap[0].Instance).Free
Aufruf
destructor TRefCache.Destroy;
begin
FHREFs.Free;
FMHREFs.Free;
FNodes := nil; //Causes AV
end;
Fnodes ist ein TInterfaceList eine Referenz auf IXMLNodes enthält, aber das Objekt zu haben scheint wurde vor all dem befreit.
Kennt jemand dieses Problem? Wie man es löst?
[Bearbeiten] Weitere Informationen über die Verwendung des RIO Objekts Das THTTPRIO Objekt nur in dem folgenden Aufruf die Webservice verwendet:
LIResult.Assign((Rio as IWSLicenseIntf).CheckLicense(FLicenseInfo));
Das LIResult Objekt wird später befreit.
Ich habe versucht, die THTTPRIO-Komponente manuell im Code zu erstellen und zu befreien, mit "THTTPRIO.Create (nil)" und "FreeAndNil (RIO)" aber immer noch bekomme ich die gleiche AV. Ich habe den ersten Beitrag hier bearbeitet, um die Verwendung des RIO-Objekts detaillierter zu zeigen – Bascy
@Micke - Kommentar nur um Micke zu benachrichtigen gibt es eine Antwort auf seinen Kommentar – Bascy
@Bascy Bearbeitete Antwort –