Neapdorota išimtis: System.AggregateException: įvyko viena ar daugiau klaidų. ---> System.IO.IOException: failą "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" naudoja kitas procesas, todėl šio failo pasiekti negalima. System.IO.__Error.WinIOError(Int32 klaidos kodas, eilutė galbūtFullPath) System.IO.FileStream.Init(Eilutės kelias, FileMode režimas, FileAccess prieiga, Int32 teisės, Bulio logikos useRights, FileShare bendrinimas, Int32 bufferSize, FileOptions parinktys SECURITY_ATTRIBUTES secAttrs, String msgPath, Bulio bFromProxy, Bulio logikos useLongPath, Bulio logikos checkHost) In System.IO.FileStream: ctor(Eilutės kelias, FileMode režimas, FileAccess prieiga, FileShare bendrinimas) System.IO.File.Open(Eilutės kelias, FileMode režimas, FileAccess prieiga) ConsoleApp1.FileReadHelper.SingleFile(String path) vietoje C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: eilutės numeris 27 In ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Eilutė x) Pozicija C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Eilutės numeris 68 In System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask) Dalyje System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objektas) --- Vidinių išimčių rietuvės sekimo --- pabaiga System.Threading.Tasks.Task.ThrowIfExceptional(Bulio logika includeTaskCanceledExceptions) System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 įExclusive, ParallelOptions parallelOptions, Action'1 body, Action'2 bodyWithState, Func'4 bodyWithLocal, Func'1 localInit, Action'1 localGaliausiai) 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 localPagaliau) System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 šaltinis, veiksmas'1 tekstas) ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 kelias) vietoje C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: 66 eilutės numeris At ConsoleApp1.Program.Main(String[] args) pozicija C:\project\my\TestNet\ConsoleApp1\Program.cs: eilutės numeris 73 Norėdami tęsti, paspauskite bet kurį klavišą. . . .
Klaida akivaizdi, tai yra, failo negalima pasiekti, failo negalima perskaityti, o tai yra išimtis, išmesta naudojant kelias gijas
Skaičiau, kaip parašytas dokumentas:
Aš tik nustatyti skaitymo režimą, o ne rašymo režimą, ir nustatė, kad pagal multi-threading, vis tiek bus klaida, ar ne tik skaityti?
Jei jis skirtas tik skaityti, tai neturėtų būti klaida
Sprendimas:
Tai turėtų būti failų skaitymas tik skaitymo režimu, išbandytas ir nustatytas, kad tai nėra klaida, o tą patį failą galima skaityti vienu metu keliose gijose
|