Pahalı bir nesneyi .NET'in Lazy sınıfı aracılığıyla başlatmaya çalışıyorum, bu durum bir istisna nedeniyle başarısız olabilir. Tembel sınıfın örneği önbelleğe alınır, çünkü sonraki girişimde başlatma başarılı olabilir. önbelleğe olmayacak PublicationOnly istisna ile .NET'in belgelerine göreTembel başlatma sırasında atılan özel durum yakalanamıyor (C# .NET)
Lazy<someObject> lazyValue =
new Lazy<someObject>(() => { expensive initialization; },
System.Threading.LazyThreadSafetyMode.PublicationOnly);
ve böylece tek bir değer yeniden başlatmak deneyebilirsiniz şu şekildedir: Ben böylece örneğini oluşturma. Özel durumun yakalanamayacağı sorunuyla karşılaştım. Şimdi kendi tembel sınıfımı yazmak oldukça basit ama .NET'in Lazy sınıfını hatalı kullanıyorum mı yoksa bir hata mı olduğunu öğrenmek ister misiniz? çalışması gerekir gibi görünüyor,
private static void DoesntWork()
{
int i = 0;
Lazy<string> lazyValue = new Lazy<string>(() =>
{
if (i < 2)
{
throw new Exception("catch me " + i);
}
return "Initialized";
}, System.Threading.LazyThreadSafetyMode.PublicationOnly);
for (; i < 3; i++)
{
try
{
Console.WriteLine(lazyValue.Value);
}
catch (Exception exc) // I do not catch the exception!
{
Console.WriteLine(exc.Message);
}
}
}
Benim için çalışıyor, beni yazdır 0 Beni yakala 1 Başlangıcı ' – SLaks
makinemde çalışıyor. Hata ayıklama olmadan çalıştırın (CTRL-F5) – jeroenh
Ctrl-F5 ile çalıştırmayı denedim ve sağ işinize yaradı ama şimdi hata ayıklama sırasında neden çalışmaz? – Rehan