Käsittelemätön poikkeus: System.AggregateException: Yksi tai useampi virhe on tapahtunut. ---> System.IO.IOException: Tiedostoa "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" käyttää toinen prosessi, joten tähän tiedostoon ei pääse käsiksi. osoitteessa System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) System.IO.FileStream.Init(String path, FileMode-tila, FileAccess-käyttö, Int32-oikeudet, Boolean useRights, FileShare-jako, Int32-bufferSize, FileOptions-asetukset, SECURITY_ATTRIBUTES secAttrs, string msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) System.IO.FileStreamissa: ctor(Merkkijonopolku, Tiedostotilatila, TiedostoAccess-käyttö, Tiedostojako) System.IO.File.Openissa (Merkkijonopolku, FileMode-tila, FileAccess-käyttöoikeus) ConsoleApp1.FileReadHelper.SingleFile(String path) -paikassa C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: rivinumero 27 ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0 -tiedostossa. <MultipleFilesAsync>b__0(Merkkijono x) Sijainti C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Rivinumero 68 In System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask) -tiedostossa In System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objekti) --- Sisäisen poikkeuspinon jäljityksen loppu --- System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) -tiedostossa 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 localLopuksi) 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 local'1 localFinally) osoitteessa System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1-lähde, Action'1-runko) ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) kohdassa C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: rivinumero 66 ConsoleApp1.Program.Main(String[] args) -kohdassa C:\project\my\TestNet\ConsoleApp1\Program.cs: rivinumero 73 Paina mitä tahansa näppäintä jatkaaksesi. . . .
Virhe on ilmeinen, eli tiedostoon ei pääse käsiksi, tiedostoa ei voi lukea, mikä on poikkeus monisäikeisyydestä
Luin, miten asiakirja on kirjoitettu:
Asetin vain lukutilan, en kirjoitustilaa, ja huomasin, että monisäikeisessä virhe tulee silti, eikö se ole vain luku -tilassa?
Jos se on vain luku -tilassa, sen ei pitäisi olla virhe
Ratkaisu:
Tämän pitäisi lukea tiedostoja vain luku -tilassa, testasin ja todettiin, ettei kyse ole virheestä, ja samaa tiedostoa voi lukea samanaikaisesti useiden säikeiden alla
|