Ohanterat undantag: System.AggregerUndantag: Ett eller flera fel har inträffat. ---> System.IO.IOException: Filen "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" används av en annan process, så denna fil kan inte nås. på System.IO.__Error.WinIOError(Int32 felkod, sträng maybeFullPath) I System.IO.FileStream.Init(Strängväg, Fillägesläge, Filåtkomståtkomst, Int32-rättigheter, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions-alternativ, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) I System.IO.FileStream: ctor(Strängväg, Fillägesläge, Filåtkomståtkomst, Fildelningsdelning) I System.IO.File.Open(Strängsök, Fillägesläge, Filåtkomståtkomst) På ConsoleApp1.FileReadHelper.SingleFile(String path) plats C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: radnummer 27 I ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Sträng x) Position C:\projekt\my\TestNet\ConsoleApp1\FileReadHelper.cs: Radnummer 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(Föremål) --- Slutet på den interna undantagsstackspårningen --- 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 bodyMedStateAndIndex, Func'4 bodyWithStateAndLocal, Func'5 bodyWithEverything, Func'1 localInit, Action'1 localFinally) på System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 source, Action'1 body) I ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) på plats C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: radnummer 66 På ConsoleApp1.Program.Main(String[] args) position C:\project\my\TestNet\ConsoleApp1\Program.cs: radnummer 73 Tryck på vilken knapp som helst för att fortsätta...
Felet är uppenbart, det vill säga filen kan inte nås, filen kan inte läsas, vilket är ett undantag som kastas under multitrådning
Jag läste hur dokumentet är skrivet:
Jag satte bara läsläget, inte skrivläget, och upptäckte att under multitrådning kommer det fortfarande att finnas ett fel, är det inte skrivskyddat?
Om det är skrivskyddat bör det inte vara ett fel
Lösning:
Detta bör läsa filer i skrivskyddat läge, testat det och upptäckt att det inte är ett fel, och samma fil kan läsas samtidigt under flera trådar
|