У меня проблема с многопоточностью при копировании и доступе к файлам.
У меня есть служба, которая загружает и распаковывает Zip-архив, затем копирует файл из разархивированной папки в нужное место:
//Download, and uzip archive...
//Copy a needed file to its right location
File.Copy(fileName, fileDestination);
Затем я запускаю отдельный поток, которому требуется доступ к скопированным файлам:
TheadPool.QueueUserWorkItem(s => processCopiedFile(fileDestination));
Вот фрагмент кода из ProcessCopiedFile:
private void ProcessCopiedFile(string filePath)
{
...
//Load the file, previously copied here
var xml = XDocument.Load(filePath);
...
//Do other work...
}
Ошибка вызова XDoument.Load за исключением:
The process cannot access the file <FileName> because it is used by another process.
Похоже, File.Copy сохраняет файл результатов заблокированным. Когда все работают синхронно, все работает без ошибок.
У тебя есть мысли?
Thx.