Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 23060|Odpoveď: 1

[Zdroj] .net/c# riešenie súborov len na čítanie s viacvláknovým prístupom

[Kopírovať odkaz]
Zverejnené 11. 10. 2017 15:06:48 | | | |
Nespracovaná výnimka: System.AggregateException: Vyskytla sa jedna alebo viac chýb. ---> System.IO.IOException: Súbor "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" používa iný proces, takže k tomuto súboru nie je prístup.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   V System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   V System.IO.FileStream: ctor(String path, FileMode mode, FileAccess access, FileShare share)
   V System.IO.File.Open (Cesta k reťazcu, režim FileMode, prístup k FileAccess)
   At ConsoleApp1.FileReadHelper.SingleFile(String path) lokalita C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: riadok číslo 27
   V ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(reťazec x) Pozícia C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Riadok číslo 68
   V System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1()
   In System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   V System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objekt)
   --- Koniec interného stopovania výnimiek ---
   In System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   In System.Threading.Tasks.Task.Wait(Int32 milisekúndTimeout, 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 localNakoniec
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 source, Action'1 body)
   In ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) na lokalite C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: riadok číslo 66
   Na ConsoleApp1.Program.Main(String[] args) pozícia C:\project\my\TestNet\ConsoleApp1\Program.cs: riadok číslo 73
Prosím, stlačte akúkoľvek klávesu pre pokračovanie...




Chyba je zrejmá, teda súbor nie je prístupný, súbor sa nedá prečítať, čo je výnimka v rámci multithreadingu

Čítal som, ako je dokument napísaný:

Nastavil som len režim čítania, nie režim zápisu, a zistil som, že aj pri multi-threadingu sa stále objavuje chyba, nie je to len na čítanie?

Ak je len na čítanie, nemala by to byť chyba

Riešenie:



Malo by to byť čítanie súborov len na čítanie, otestované a zistené, že to nie je chyba, a ten istý súbor je možné čítať súčasne pod viacerými vláknami




Predchádzajúci:Jedným kliknutím návod na inštaláciu asistenta Jedným kliknutím sprievodca preinštaláciou systémového asistenta
Budúci:.NET/C# Operácia čítania súboru na čítanie všetkých riadkov súboru v dávkach
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com