Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 23060|Antwort: 1

[Quelle] .net/c# Multithreaded-Nur-Lese-Datei-Lösung

[Link kopieren]
Veröffentlicht am 11.10.2017 15:06:48 | | | |
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




Vorhergehend:Ein-Klick-Neuinstallations-Tutorial Installationsassistent Ein-Klick-Neuinstallationsanleitung des Systemassistenten
Nächster:.net/c# Dateileseoperation, um alle Zeilen der Datei in Chargen zu lesen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com