Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 23060|Отговор: 1

[Източник] .net/c# решение за многонишкови файлове само за четене

[Копирай линк]
Публикувано в 11.10.2017 г. 15:06:48 ч. | | | |
Необработено изключение: System.AggregateException: Възникнали са една или повече грешки. ---> System.IO.IOException: Файл "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" се използва от друг процес, така че този файл не може да бъде достъпен.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   В System.IO.FileStream.Init (String path, FileMode режим, FileAccess достъп, Int32 права, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions опции, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   В System.IO.FileStream: ctor (Път към низ, режим FileMode, достъп до FileAccess, споделяне на Файла)
   В System.IO.File.Open (Път към низ, режим FileMode, достъп до FileAccess)
   В ConsoleApp1.FileReadHelper.SingleFile(String path) location C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: ред номер 27
   В ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Низ x) Позиция C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Ред номер 68
   В System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1()
   В System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   В System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Обект)
   --- Край на вътрешния стек с изключения ---
   В System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   В 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)
   В 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 localFinal)
   в System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 източник, тяло Action'1)
   В ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) на място C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: ред номер 66
   В ConsoleApp1.Program.Main(String[] args) позиция C:\project\my\TestNet\ConsoleApp1\Program.cs: ред номер 73
Моля, натиснете който и да е клавиш, за да продължите...




Грешката е очевидна, тоест файлът не може да бъде достъпен, файлът не може да бъде прочетен, което е изключение, хвърлено при мултитрединг

Прочетох как е написан документът:

Настроих само режима на четене, не и режима на запис, и установих, че при многонишковост все още има грешка, нали е само за четене?

Ако е само за четене, не би трябвало да е грешка

Решение:



Това трябва да е четене на файлове в режим само за четене, тествах и установих, че не е грешка, и един и същ файл може да се чете едновременно в няколко нишки




Предишен:Ръководство за еднократна инсталация асистент за инсталация Ръководство за еднократна инсталация на системен асистент
Следващ:.net/c# операция за четене на файлове за четене на всички редове на файла на партиди
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com