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

Melihat: 41603|Jawab: 2

[Sumber] .NET/C# mengimplementasikan pengelogan sederhana berdasarkan BlockingCollection

[Salin tautan]
Dipaparkan pada 2021-1-5 14:58:50 | | | |
Saya menulis kelas bantuan pencatatan sederhana sebelumnya, disalin dari kerangka kerja lain, dan pengujiannya tidak mudah digunakan, sebagai berikut:

C# adalah cara termudah untuk menulis log
https://www.itsvse.com/thread-5111-1-1.html
Artikel ini mengimplementasikan ulang kelas pengelogan sederhana berdasarkan BlockingCollection.

Koleksi Keamanan Benang .NET/C# (kolasi)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> adalah kelas koleksi aman utas yang menyediakan fungsionalitas berikut:

Terapkan model pembuat-pengguna.
Tambahkan dan ambil item secara bersamaan melalui multithreading.
Kapasitas maksimum opsional.
Ketika koleksi kosong atau penuh, itu diblokir oleh operasi memasukkan dan melepas.
Upaya sisipan dan hapus tidak memblokir atau terjadi untuk jangka waktu tertentu.
Enkapsulasi mengimplementasikan semua jenis koleksi IProducerConsumerCollection<T>
Gunakan tag batal untuk melakukan tindakan pembatalan.
Dua jenis enum yang menggunakan foreach (di Visual Basic, For Each) didukung: enum baca-saja. Pencacahan yang menghapus item saat item dihitung.


Microsoft memperkenalkan:Login hyperlink terlihat.

BlockingCollection adalah antrean pemblokiran yang aman untuk utas, menggunakan fitur ini untuk mengimplementasikan mode produsen-konsumen dalam proses, seperti penerusan pesan, pengelogan, dll.

Panggil metode Add untuk menambahkan informasi ke antrean, dan ketika antrean tidak memiliki pesan, IsCompleted akan selalu memblokir perulangan while, sehingga tidak akan menyebabkan perulangan mati. Ketika pesan baru keluar, IsCompleted di while akan dipicu dan mengembalikan jenis bool, menyebabkan eksekusi berlanjut, yaitu mengambil data dari utas.


Sebelumnya, kami memblokir utas dengan memanggil metode WaitOne dari ManualResetEvent, memanggil metode Reset dan Set untuk meneruskan sinyal, sebagai berikut:

c# merangkum antrean QueueHelper universal
https://www.itsvse.com/thread-5029-1-1.html


Pengujian menulis 10.000 log, yang membutuhkan waktu kurang dari 10 milidetik, seperti yang ditunjukkan pada gambar di bawah ini:



Kodenya adalah sebagai berikut:

Unduhan kode sumber:

Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakanJawab





Mantan:warning: LF will be replaced by CRLF in xxxx.
Depan:Pengoptimalan Kueri Kerangka Entitas WITH(NOLOCK)
 Tuan tanah| Dipaparkan pada 2021-1-23 11:53:55 |
.NET/C# didasarkan pada antrean tugas latar belakang BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Dipaparkan pada 2023-4-24 22:36:31 |
Bahan pelajaran yang sangat baik, sangat bagus
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