Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 23060|Jawab: 1

[Sumber] .net/c# solusi file baca-saja multithread

[Salin tautan]
Diposting pada 11/10/2017 15.06.48 | | | |
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




Mantan:Tutorial penginstalan ulang sekali klik asisten instalasi
Depan:.net/c# operasi baca file untuk membaca semua baris file dalam batch
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com