В нашем приложении D2007 мы используем веб-сервис, доступ к которому осуществляется с помощью объекта THTTPRIO.
Когда TDatamodule, содержащий объект THTTPRIO, уничтожен, возникает нарушение прав доступа.
Этот AV вызывается при освобождении TSoapDOMConvert, который в свою очередь выполняет:
TRefCache(RefMap[0].Instance).Free
вызывающий
destructor TRefCache.Destroy;
begin
FHREFs.Free;
FMHREFs.Free;
FNodes := nil; //Causes AV
end;
FNodes - это TInterfaceList, содержащий одну ссылку на IXMLNodes, но объект, кажется, был освобожден до всего этого.
Кто-нибудь знает эту проблему? Как это решить?
[Редактировать] Подробнее об использовании объекта RIO
Объект THTTPRIO используется только при следующем вызове веб-службы:
LIResult.Assign((Rio as IWSLicenseIntf).CheckLicense(FLicenseInfo));
Объект LIResult позднее освобождается.