Необроблене виключення: System.AggregateException: Сталася одна або кілька помилок. ---> System.IO.IOException: Файл "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" використовується іншим процесом, тому доступ до цього файлу неможливий. на System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) У System.IO.FileStream.Init (String path, режим FileMode, доступ до FileAccess, права Int32, булеві права useRights, FileShare share, Int32 bufferSize, опції FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) У System.IO.FileStream: ctor (Шлях до рядків, режим FileMode, доступ до FileAccess, ShareShare) У System.IO.File.Open (Шлях до рядків, режим FileMode, доступ до FileAccess) У ConsoleApp1.FileReadHelper.SingleFile(String path) location C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: рядок номер 27 У ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Рядок x) Позиція C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Рядок номер 68 У System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() У System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask) У System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Об'єкт) --- Кінець внутрішньої трасування стеку винятків --- У System.Threading.Tasks.Task.ThrowIfExceptional(булевий includeTaskCanceledExceptions) У System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) In System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action'1 body, Action'2 bodyWithState, Func'4 bodyWithLocal, Func'1 localInit, Action'1 localFinal) У System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable'1 source, ParallelOptions, Action'1 body, Action'2 bodyWithState, Action'3 bodyWithStateAndIndex, Func'4 bodyWithStateAndLocal, Func'5 bodyWithEverything, Func'1 localInit, Action'1 localFinal) у System.Threading.Tasks.Parallel.ForEach[TSource](джерело IEnumerable'1, тіло Action'1) У ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) у локації C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: рядок номер 66 У ConsoleApp1.Program.Main(String[] args) позиція C:\project\my\TestNet\ConsoleApp1\Program.cs: рядок номер 73 Будь ласка, натисніть будь-яку клавішу, щоб продовжити...
Помилка очевидна, тобто до файлу неможливо отримати доступ, його не можна прочитати, що є виключенням при багатопотоковій роботі
Я прочитав, як написано документ:
Я встановив лише режим читання, а не режим запису, і виявив, що при багатопотоковому режимі все одно буде помилка, хіба це не лише для читання?
Якщо це лише для читання, це не повинно бути помилкою
Рішення:
Це має бути читання файлів у режимі лише для читання, я перевірив і виявив, що це не помилка, і той самий файл можна читати одночасно в кількох потоках
|