Bu daha akademik bir sorudur ... ancak ConcurrentDictionary.TryAdd başarısız olabilir mi? Ve eğer böyle durumlarda ve neden?Can ConcurrentDictionary.TryAdd başarısız mı?
cevap
elinden Evet, burada koşullar (from msdn) şunlardır:
- ArgumentNullException - anahtardır null başvuru
- OverflowException - elemanlarının maksimum sayıda ulaşıldı zaman
- It Aynı anahtara sahip bir öğe yanlış döndürürse
Sadece yinelemek için, bu eşzamanlılık ile ilgisi yok. Aynı anda bir öğe ekleme hakkında iki konuları kaygı varsa o zaman şu olabilir: tuşları
- Hem ekler, iyi çalışır, diğer ekleme başarısız (istisnasız) ve yanlış döndürür. Bu, iki iş parçacığının aynı anahtara sahip bir öğeyi eklemeyi denemesi ve temel olarak yalnızca birinin diğerini kaybetmesiyle olur.
Tamam ... eşzamanlı erişim ile ilgisi yok ... sadece standart bir sözlükle yapması gereken aynı kontrolleri gerçekleştiriyor. –
Evet, dahili olarak birden çok eşzamanlı bağlantıya izin veren CPU eğirme kullanır. – oleksii
Teşekkürler .. Cevabınızı en yapıcı olarak kabul ediyorum. Burada oldukça zor bir hatanın hatalarını ayıklıyoruz ve olası kaynakları hatlara göre belirliyoruz. Katkıda bulunduğunuzlara dayanarak TryAdd'yi ekleyebilirim (ekleyememe durumunda hala ek kayıt ekleyeceğim rağmen) –
Elbette yapabilir. Anahtar zaten varsa, yöntem yanlış döndürür.
Ref: http://msdn.microsoft.com/en-us/library/dd267291.aspx
Dönüş Değeri Tür: System.Boolean true anahtar/değer çifti başarıyla ConcurrentDictionary eklendi eğer. Anahtar zaten varsa, bu yöntem false değerini döndürür.
Eh ... Bu verilen bir. Başarısız olduğu tek durum bu mu? –
@daveL - evet, istisnalar oluştuğunda ... Oleksi'nin cevabı. –
Yardımınız için teşekkürler ... –
Anahtar zaten sözlükte mevcut olduğunda başarısız olur.
Bellek tükendiğiniz için değer eklenemiyorsa, bunun yerine bir istisna alırsınız.
- 1. Can -verbose: sınıf bir sınıftan mı çalışıyor?
- 2. Can Schema.org VideoObject etiketleri iframe'lere uygulanacak mı?
- 3. Can Perforce ve SourceSafe birlikte var mı?
- 4. Can Response.Redirect, özel bir void MVC 2 İşlevi'nde çalışır mı?
- 5. can koşullu operatör örtük ...
- 6. Can system.js replace gerektirir.js
- 7. Can Selenium web sürücüsünün javascript global değişkenlerine erişimi var mı?
- 8. Can XML metin içinde bir etiket var mı?
- 9. Can Spaces Bir Dosya Uzantısı İçinde Var mı?
- 10. Can Rhino Daha derin/iç içe üyeler doğrudan mı?
- 11. Can. (dönem) bir URL'nin yol bölümünün parçası olmak mı?
- 12. Can CancellationTokens, AppDomains
- 13. Can iOS 9.0 GM
- 14. SocketCAN'da Sanal CAN (vcan) için CAN FD desteği
- 15. açık (2) errno == EMLINK ile başarısız mı?
- 16. Dojo Build with NLS - requireLocalization (..) başarısız mı?
- 17. Boyutu nedeniyle xml okuma başarısız olabilir -can python satır satır okunabilir mi?
- 18. Can Golang, Python can gibi dizeleri çoğaltabilir mi?
- 19. Can KOTLIN (ExecutionException, Aapt2Exception)
- 20. 'veriler' bağlamak Can not
- 21. Can OLTU, JWT'leri Erişim Belirteçleri
- 22. Can Docker, SUSE 11 SP3
- 23. Can @ grubu ek açıklaması phpunit
- 24. Can tr1 :: işlev dönüş değerlerini çalıştırabilir mi?
- 25. Can JMockit MockUp alay toString()?
- 26. Can Castle.Windsor, beton türlerinin otomatik çözünürlüğünü yapabilir
- 27. AVPlayer "Eylem değil Komple Can"
- 28. Can boost :: program_options "-" dışında bir ayırıcı kullanın?
- 29. PHP kendini değiştirmek :: statik Can ::?
- 30. Can Haskell OSGi uyguluyor mu?
Bu soru oldukça belirsizdir. MSDN [sayfa] (http://msdn.microsoft.com/en-us/library/dd267291.aspx), birkaç istisna, istisnai ve diğer (şimdiye kadar verilmiş cevaplar gibi) belgelenmiştir. –
evet ve MSDN belgeleri netliği ve kusursuzluğuyla bilinir –
Peki, diğer cevaplar için yeterince açık ve kusursuz görünüyor. –