Unbehandelte Ausnahme: System.AggregateException: Einer oder mehrere Fehler sind aufgetreten. ---> System.IO.IOException: Die Datei "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" wird von einem anderen Prozess verwendet, daher kann auf diese Datei nicht zugegriffen werden. bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) In System.IO.FileStream.Init(Stringpath, FileMode-Modus, Dateizugriff, Int32-Rechte, Boolean useRights, FileShare Share, Int32 bufferSize, FileOptions-Optionen, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) In System.IO.FileStream: ctor (Stringpfad, Dateimodus, Dateizugriffszugriff, Dateifreigabe) In System.IO.File.Open(Stringpfad, Dateimodus, Dateizugriff) Unter ConsoleApp1.FileReadHelper.SingleFile(String-Pfad) Standort C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Zeilennummer 27 In ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(String x) Position C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Zeilennummer 68 In System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() In System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask) In System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objekt) --- Ende des internen Ausnahmestack-Traces --- In System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) In 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 localFinally) In 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 localFinally) bei System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 source, Action'1 body) In ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 pfad) am Standort C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Zeilennummer 66 Bei ConsoleApp1.Program.Main(String[] args) Position C:\project\my\TestNet\ConsoleApp1\Program.cs: Zeilennummer 73 Bitte drücken Sie eine beliebige Taste, um fortzufahren...
Der Fehler ist offensichtlich, das heißt, die Datei kann nicht abgerufen werden, die Datei kann nicht gelesen werden, was eine Ausnahme unter Multithreading darstellt
Ich habe gelesen, wie das Dokument geschrieben ist:
Ich habe nur den Lesemodus eingestellt, nicht den Schreibmodus, und festgestellt, dass es unter Multithreading immer noch einen Fehler gibt, ist es nicht lesegeschützt?
Wenn es schreibgeschützt ist, sollte es kein Fehler sein
Lösung:
Dies sollte Dateien im Nur-Lesemodus sein, habe getestet und festgestellt, dass es kein Fehler ist und dieselbe Datei gleichzeitig unter mehreren Threads gelesen werden kann
|