Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 23060|Svar: 1

[Källa] .net/c# multitrådad skrivskyddad fillösning

[Kopiera länk]
Publicerad på 2017-10-11 15:06:48 | | | |
Ohanterat undantag: System.AggregerUndantag: Ett eller flera fel har inträffat. ---> System.IO.IOException: Filen "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" används av en annan process, så denna fil kan inte nås.
   på System.IO.__Error.WinIOError(Int32 felkod, sträng maybeFullPath)
   I System.IO.FileStream.Init(Strängväg, Fillägesläge, Filåtkomståtkomst, Int32-rättigheter, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions-alternativ, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   I System.IO.FileStream: ctor(Strängväg, Fillägesläge, Filåtkomståtkomst, Fildelningsdelning)
   I System.IO.File.Open(Strängsök, Fillägesläge, Filåtkomståtkomst)
   På ConsoleApp1.FileReadHelper.SingleFile(String path) plats C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: radnummer 27
   I ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Sträng x) Position C:\projekt\my\TestNet\ConsoleApp1\FileReadHelper.cs: Radnummer 68
   I System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1()
   I System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   I System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Föremål)
   --- Slutet på den interna undantagsstackspårningen ---
   I System.Threading.Tasks.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   I System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   I 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)
   I System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable'1 source, ParallelOptions, Action'1 body, Action'2 bodyWithState, Action'3 bodyMedStateAndIndex, Func'4 bodyWithStateAndLocal, Func'5 bodyWithEverything, Func'1 localInit, Action'1 localFinally)
   på System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 source, Action'1 body)
   I ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) på plats C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: radnummer 66
   På ConsoleApp1.Program.Main(String[] args) position C:\project\my\TestNet\ConsoleApp1\Program.cs: radnummer 73
Tryck på vilken knapp som helst för att fortsätta...




Felet är uppenbart, det vill säga filen kan inte nås, filen kan inte läsas, vilket är ett undantag som kastas under multitrådning

Jag läste hur dokumentet är skrivet:

Jag satte bara läsläget, inte skrivläget, och upptäckte att under multitrådning kommer det fortfarande att finnas ett fel, är det inte skrivskyddat?

Om det är skrivskyddat bör det inte vara ett fel

Lösning:



Detta bör läsa filer i skrivskyddat läge, testat det och upptäckt att det inte är ett fel, och samma fil kan läsas samtidigt under flera trådar




Föregående:Ett-klicks ominstallationsguide En-klicks ominstallationsguide för systemassistent
Nästa:.net/c# filläsningsoperation för att läsa alla rader i filen i batchar
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com