Ubehandlet undtagelse: System.Aggregeret undtagelse: En eller flere fejl er opstået. ---> System.IO.IOException: Filen "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" bruges af en anden proces, så denne fil kan ikke tilgås. på System.IO.__Error.WinIOError(Int32 fejlkode, streng maybeFullPath) I System.IO.FileStream.Init(Strengsti, Filtilstandstilstand, Filadgangsadgang, Int32-rettigheder, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions-indstillinger, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) I System.IO.FileStream: ctor(Strengsti, Filtilstand, Filadgangsadgang, Fildelingsdeling) I System.IO.File.Open(Strengsti, Filtilstand, Filadgangsadgang) På ConsoleApp1.FileReadHelper.SingleFile(String path) placering C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: linjenummer 27 I ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Streng x) Position C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Linjenummer 68 I System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() I System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask) I System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objekt) --- Slutningen på den interne undtagelsesstaksporing --- I System.Threading.Tasks.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) I System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) I 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 localFinally) I 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 localTFinally) at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 kilde, Action'1 body) I ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) på placering C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: linjenummer 66 På ConsoleApp1.Program.Main(String[] args) position C:\project\my\TestNet\ConsoleApp1\Program.cs: linjenummer 73 Tryk venligst på en hvilken som helst tast for at fortsætte...
Fejlen er åbenlys, det vil sige, filen kan ikke tilgås, filen kan ikke læses, hvilket er en undtagelse under multithreading
Jeg læste, hvordan dokumentet er skrevet:
Jeg satte kun læsetilstanden, ikke skrivetilstanden, og fandt ud af, at under multitråding vil der stadig være en fejl, er det ikke læsebeskyttet?
Hvis det er skrivebeskyttet, burde det ikke være en fejl
Opløsning:
Dette burde læse filer i skrivebeskyttet tilstand, testet det og fundet ud af, at det ikke er en fejl, og at den samme fil kan læses samtidig under flere tråde
|