环境:Delphi 2010,Indy10
我知道我并不孤单... File is Still in Use Error 32 How can I free it?
但经过几天的战斗,我放弃了。
我的代码
var
multi: TIdMultipartFormDataStream;
ss: TStringStream;
FHTTP: TIdHTTP;
FHTTP := TidHTTP.Create(nil);
Multi:=TidMultiPartFormDataStream.Create;
Multi.AddFormField('eventid', TSettingsManager.GetAppSettings('EventID'));
Multi.AddFormField('password', TSettingsManager.GetAppSettings('EventPassword'));
Multi.AddFile('file', filename, 'image/jpeg'); //GetMIMETypeFromFile(fileName));
try
FHTTP.Post(TSettingsManager.GetAppSettings('WEBServer') + '/upload', Multi, ss);
finally
Multi.Clear;
FreeAndNil(Multi);
FreeAndNil(FHTTP);
end;
IOUtils.TFile.Delete(filename);
当我尝试删除文件时,我有异常“文件正在使用中”。 我该如何处理以获取文件然后将其删除?
答案 0 :(得分:0)
显示的代码没有错误。
可以看到一些潜在的内存泄漏,可以通过正确使用try .. finally来轻松修复。
另外,你可以用更短的方式创建一个没有所有者的TIdHTTP实例。而不是:
HTTP := TIdHTTP.Create(nil);
你可以放弃这个论点:
HTTP := TIdHTTP.Create;