Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 23060|Odpowiedź: 1

[Źródło] .NET/C# rozwiązanie plików wielowątkowych tylko do odczytu

[Skopiuj link]
Opublikowano 11.10.2017 15:06:48 | | | |
Wyjątek nieobsługiwany: System.AggregateWyjątek: Wystąpił jeden lub więcej błędów. ---> System.IO.IOException: Plik "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" jest używany przez inny proces, więc do tego pliku nie ma dostępu.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   W System.IO.FileStream.Init(ścieżka stringów, tryb FileMode, dostęp do FileAccess, prawa Int32, prawa Boolean useRights, FileShare share, Int32 bufferSize, opcje FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   W System.IO.FileStream: ctor(ścieżka ciągu znaków, tryb FileMode, dostęp do FileAccess, udostępnianie plików FileShare)
   W System.IO.File.Open (ścieżka ciągu znaków, tryb FileMode, dostęp do FileAccess)
   W ConsoleApp1.FileReadHelper.SingleFile(ścieżka łańcuchowa) lokalizacja C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: linia numer 27
   W ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(String x) Pozycja C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Linia numer 68
   W System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1()
   In System.Threading.Tasks.Task.InnerInvokeWithArg(Child Task)
   W System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Obiekt)
   --- Koniec wewnętrznego śledzenia stosu wyjątków ---
   W System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   W 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 localFinal)
   W System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable'1 źródło, ParallelOptions, Action'1 body, Action'2 bodyWithState, Action'3 bodyWithStateAndIndex, Func'4 bodyWithStateAndLocal, Func'5 bodyWithEverything, Func'1 localInit, Action'1 localWreszcie)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 źródło, Action'1 body)
   W ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) w lokalizacji C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: linia numer 66
   Na pozycji ConsoleApp1.Program.Main(String[] args) C:\project\my\TestNet\ConsoleApp1\Program.cs: linia numer 73
Proszę nacisnąć dowolny, aby kontynuować...




Błąd jest oczywisty, czyli plik nie może być dostępny, nie można go odczytać, co jest wyjątkiem w ramach wielowątkowania

Przeczytałem, jak napisany jest ten dokument:

Ustawiłem tylko tryb odczytu, nie zapisu, i zauważyłem, że w trybie wielowątkowym nadal pojawia się błąd, czy to nie jest tylko do odczytu?

Jeśli jest tylko do odczytu, nie powinien to być błąd

Rozwiązanie:



Powinien to być odczyt plików tylko do odczytu, przetestowany i stwierdzony, że to nie błąd, a ten sam plik można odczytać jednocześnie pod wieloma wątkami




Poprzedni:Jednym kliknięciem – samouczek instalacji asystenta instalacji Jednym kliknięciem przewodnik po ponownej instalacji systemu asystenta
Następny:Operacja odczytu pliku .net/c# do odczytu wszystkich wierszy pliku w partiach
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com