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

Görünüm: 24412|Yanıt: 1

[Kaynak] C# iş parçacıkları tarafından öğrenilen ManualResetEvent ile AutoResetEvent arasındaki fark

[Bağlantıyı kopyala]
Yayınlandı 31.05.2018 14:59:47 | | | |
Önce ManualResetEvent'i tartışalım ve tartışma sırasında karşılaştırmak için biraz AutoResetEvent içeriği ekleyeceğim:

ManualResetEvent, ManualResetEvent'e mevcut iş parçacığını engellemeyi durdurmasını söyleyen bir sinyal alınana kadar bir veya daha fazla iş parçacığını engelleyebilir.

ManualResetEvent hakkında bilgi

.net/c# Thread thread Askıya Alma ve Devam Eden Eski çözümler
https://www.itsvse.com/thread-4769-1-1.html
(Kaynak: Architect_Programmer)


ManualResetEvent nesnesinin mevcut iş parçacığını engelleyip engellemeyeceğini kontrol etmek için IsRelease adlı bir Boolean tipi özelliğine sahip olduğunu hayal edin. Bu özelliği başlatırken ayarlayabiliriz, örneğin ManualResetEvent event=new ManualResetEvent(false); Bu, varsayılan özelliğin mevcut iş parçacığını engellemek olduğunu gösterir.

Kod örneği:



ManualResetEvent ile AutoResetEvent arasındaki önemli bir farkı burada not edin:

Manuel kesinlikle hem 1. hem de 2. dişli ipliğe sinyal gönderir,Otomatik sadece birine rastgele sinyal gönderir.

Neden birine manuel, diğeri otomatik deniyor? Bence bu birçok kişinin sorusu ve şimdi bu soruya bakacağız.

Sadece now_manualResetEvent. Set(); Bence herkes bu cümleyi anlıyor, çünkü bu, IsRelease'in özelliğini doğru yapmak olarak değerlendirilebilir

_manualResetEvent.WaitOne(); Artık sinyal aldıktan sonra iş parçacığı 1'i engellemiyor. IsRelease'in değeri, sonraki tüm süreç boyunca geçerlidir.Eğer

IsRelease değerini false olarak döndürmek istiyorsanız, _manualResetEvent.Reset() yöntemini tekrar çağırmalısınız.

Eğer _autoResetEvent.set() ise, _autoResetEvent.WaitOne() otomatik olarak IsRelease değerini false olarak ayarlar.

Bu yüzden biri otomatik, diğeri manuel olarak adlandırılıyor.



Test kodu:







Önceki:. .NET'in en hızlı OOM nesne eşleme bileşeni olan Tiny Mapper, proje uygulamasında
Önümüzdeki:C# DEBUG hata hata ayıklama bilgisi baskı ve çıktı detaylı açıklama
 Ev sahibi| Yayınlandı 18.12.2024 20:30:44 |
Hem ManualResetEvent hem de AutoResetEventEventWaitHandle, aşağıdaki şekilde gösterildiği gibi:



Referans:Bağlantı girişi görünür.

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