C# içinde bir WCF hizmeti yazıyorum. Başlangıçta benim uygulamam, bir kerelik başlatmayı yapmak için statik bir kurucuya sahipti, ancak yapılmakta olan bazı başlatmalar (geçici olarak) başarısız olabilir.Tür başlatıcı (statik yapıcı) özel durum işleme
İlk (başarısız) deneme bir istisna atmış olsa bile, statik kurucuların yalnızca bir kez çağrıldığı anlaşılıyor mu? Sınıfımı başlatmaya yönelik sonraki girişimler, gerçekte kod yürütülmeden bir TypeInitializationException
ile hemen başarısız olacaktır.
C# dil belirtimi, statik bir kurucunun en çok bir kez çağrıldığını belirtir, ancak temel olarak bu, yakalanmasanız bile, kurtarılamayacağınız bir hatada bir istisna yapar.
Burada bir şey mi özlüyorum? Hizmetin örnek yapıcısına uzaktan tehlikeli herhangi bir şey taşımalı ve sınıf başlatma işleminin önceden başarıyla tamamlanıp tamamlanmadığını manuel olarak kontrol etmeliyim.
Aslında şu an sahip olduğum şey şu ki, çift kontrol edilen kilitleme kullanıyorum ve '_initialized' bool 'volatile' (çift kilitlemesiz kilitleme gereklidir) – Thorarin