처리되지 않은 예외: System.AggregateException: 하나 이상의 오류가 발생했습니다. ---> System.IO.IOException: 파일 "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat"이 다른 프로세스에서 사용 중이므로 이 파일에 접근할 수 없습니다. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 권리, 불리언 useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) System.IO.FileStream에서: ctor(문자열 경로, FileMode 모드, FileAccess 접근, FileShare share) System.IO.File.Open(문자열 경로, FileMode 모드, FileAccess 접근) ConsoleApp1.FileReadHelper.SingleFile(String path) 위치에서 C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: 27행 In ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(문자열 x) 위치 C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: 68번 행 In System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)에서 System.Threading.Task.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(객체) --- 내부 예외 스택 추적 종료 --- System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) System.Threading.Tasks.Task.Wait(int32밀리초 타임아웃, CancellationToken cancellationToken) System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, int32 to Exclusive, ParallelOptions parallelOptions, Action'1 body, Action'2 bodyWithState, Func'4 bodyWithLocal, Func'1 localInit, Action'1 localfinal) System.Threading.Task.Parallel.ForEachWorker[TSource,TLocal]에서 (IEnumerable'1 소스, 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 계속하려면 어떤 키를 눌러도 부탁드립니다...
오류는 명확합니다. 즉, 파일을 접근할 수 없고, 읽을 수도 없으며, 이는 멀티스레딩 시 예외로 발생합니다
문서가 어떻게 작성되었는지 읽었습니다:
읽기 모드만 설정하고 쓰기 모드는 설정하지 않았는데, 멀티스레딩에서도 오류가 발생하더군요. 읽기 전용이 아니었나요?
읽기 전용이라면 오류가 되지 않아야 합니다
용액:
이 모드는 읽기 전용 모드로 파일을 읽는 것이어야 하며, 테스트해보니 오류가 아니었고, 같은 파일을 여러 스레드에서 동시에 읽을 수 있었습니다
|