Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 41603|Yanıt: 2

[Kaynak] .NET/C#, BlockingCollection tabanlı basit logları uygular

[Bağlantıyı kopyala]
2021-1-5 tarihinde 14:58:50 tarihinde yayınlandı | | | |
Daha önce başka bir framework'ten kopyalanmış basit bir log yardım sınıfı yazdım ve test kullanımı kolay değil, aşağıdaki gibi:

C#, günlük yazmanın en kolay yoludur
https://www.itsvse.com/thread-5111-1-1.html
Bu makale, BlockingCollection tabanlı basit bir günlük sınıfını yeniden uygulamaktadır.

.NET/C# İplik Güvenliği Koleksiyonu (derleme)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T>, aşağıdaki işlevleri sağlayan iş parçacığı güvenli bir koleksiyon sınıfıdır:

Yaratıcı-kullanıcı modelini uygulayın.
Eşyaları eşzamanlı olarak çoklu iş parçacıklığı ile ekleyin ve getirin.
Isteğe bağlı maksimum kapasite.
Koleksiyon boş veya dolu olduğunda, yerleştirme ve çıkarma işlemleriyle engellenir.
Ekleme ve kaldırma girişimleri belirli bir süre boyunca engellenmez veya gerçekleşmez.
Kapsülleme, herhangi bir IProducerConsumerCollection <T>koleksiyon türü gerçekleştirir
İptal işlemi yapmak için iptal etiketini kullanın.
Foreach kullanan iki tür enum (Visual Basic'te, For Each) desteklenir: yalnızca okunabilir enumlar. Bir öğe sayıldığında bir öğeyi kaldıran bir sayım.


Microsoft şunları tanıtıyor:Bağlantı girişi görünür.

BlockingCollection, süreç içinde üretici-tüketici modunu (örneğin mesaj iletme, loglama vb.) uygulamak için kullanılan iş parçacığı güvenli bir engelleme kuyruğudur.

Kuyruğun içine bilgi eklemek için Add metodunu çağırın, kuyruğun mesajı olmadığında IsCompleted her zaman while döngüsünü engeller, böylece ölü döngü olmaz. Yeni bir mesaj çıktığında, IsCompleted in while tetiklenir ve bool türünü döndürür, bu da yürütmenin devam etmesine neden olur, yani iş parçacığından veri alınır.


Daha önce, ManualResetEvent'in WaitOne metodunu çağırarak, sinyali iletmek için Reset ve Set metodlarını çağırarak iş parçacığını engelliyorduk, şu şekilde:

c# evrensel bir QueueHelper kuyruğunu kapsüller
https://www.itsvse.com/thread-5029-1-1.html


Test 10.000 log yazar ve bu 10 milisaniyeden kısa sürer, aşağıdaki şekilde gösterildiği gibi:



Kod şöyledir:

Kaynak kodu indirme:

Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfenYanıt





Önceki:warning: LF will be replaced by CRLF in xxxx.
Önümüzdeki:Entity Framework Sorgu Optimizasyonu WITH(NOLOCK)
 Ev sahibi| 2021-1-23 tarihinde 11:53:55 tarihinde yayınlandı |
.NET/C#, BlockingCollection arka plan görev kuyruğuna dayanmaktadır
https://www.itsvse.com/thread-9528-1-1.html

2023-4-24 tarihinde yayınlandı 22:36:31 |
Mükemmel, çok iyi çalışma materyali
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com