Pengecualian yang tidak ditangani: System.AggregateException: Satu atau beberapa kesalahan telah terjadi. ---> System.IO.IOException: File "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" sedang digunakan oleh proses lain, sehingga file ini tidak dapat diakses. di System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) Di System.IO.FileStream.Init(Jalur string, mode FileMode, akses FileAccess, hak Int32, Boolean useRights, berbagi FileShare, bufferSize Int32, opsi FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) Di System.IO.FileStream: ctor(Jalur string, mode FileMode, akses FileAccess, berbagi FileShare) Di System.IO.File.Open(Jalur string, mode FileMode, akses FileAccess) Di ConsoleApp1.FileReadHelper.SingleFile(Jalur string) lokasi C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: nomor baris 27 Di ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(String x) Posisi C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: Nomor baris 68 Di System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() Di System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask) Di System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objek) --- Akhir pelacakan tumpukan pengecualian internal --- Di System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) Di System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) Di 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) Di System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](sumber IEnumerable'1, ParallelOptions, Action'1 body, Action'2 bodyWithState, Action'3 bodyWithStateAndIndex, Func'4 bodyWithStateAndLocal, Func'5 bodyWithEverything, Func'1 localInit, Action'1 localFinally) di System.Threading.Tasks.Parallel.ForEach[TSource](sumber IEnumerable'1, isi Action'1) Di jalur ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1) di lokasi C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: nomor baris 66 Di ConsoleApp1.Program.Main(String[] args) posisi C:\project\my\TestNet\ConsoleApp1\Program.cs: nomor baris 73 Silakan tekan tombol apa saja untuk melanjutkan. . . .
Kesalahannya jelas, yaitu file tidak dapat diakses, file tidak dapat dibaca, yang merupakan pengecualian yang dilemparkan di bawah multithreading
Saya membaca bagaimana dokumen itu ditulis:
Saya hanya mengatur mode baca, bukan mode tulis, dan menemukan bahwa di bawah multi-threading, masih akan ada kesalahan, bukankah itu hanya-baca?
Jika hanya baca, seharusnya bukan kesalahan
Larutan:
Ini harus membaca file dalam mode hanya-baca, mengujinya, dan menemukan bahwa itu bukan kesalahan, dan file yang sama dapat dibaca secara bersamaan di bawah beberapa utas
|