이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 23060|회답: 1

[출처] .net/c# 멀티스레드 읽기 전용 파일 솔루션

[링크 복사]
게시됨 2017. 10. 11. 오후 3:06:48 | | | |
처리되지 않은 예외: 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
계속하려면 어떤 키를 눌러도 부탁드립니다...




오류는 명확합니다. 즉, 파일을 접근할 수 없고, 읽을 수도 없으며, 이는 멀티스레딩 시 예외로 발생합니다

문서가 어떻게 작성되었는지 읽었습니다:

읽기 모드만 설정하고 쓰기 모드는 설정하지 않았는데, 멀티스레딩에서도 오류가 발생하더군요. 읽기 전용이 아니었나요?

읽기 전용이라면 오류가 되지 않아야 합니다

용액:



이 모드는 읽기 전용 모드로 파일을 읽는 것이어야 하며, 테스트해보니 오류가 아니었고, 같은 파일을 여러 스레드에서 동시에 읽을 수 있었습니다




이전의:원클릭 재설치 튜토리얼 설치 어시스턴트 시스템 어시스턴트 원클릭 재설치 가이드
다음:.net/c# 파일 읽기 작업은 파일의 모든 행을 배치로 읽기 위해 사용됩니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com