Lütfen bu kısa konsol uygulama kodunu göz önünde bulundurun.Visual Studio'nun hata ayıklama özelliğinin "işlenmemiş özel durum" ifadesinin kırılmasını önleyin.
static void Main(string[] args)
{
try
{
Action a =() =>
{
throw new ApplicationException("Oops");
};
var ar = a.BeginInvoke(null, null);
ar.AsyncWaitHandle.WaitOne();
try
{
a.EndInvoke(ar);
Console.WriteLine("No message");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
finally
{
Console.ReadKey();
}
}
onun işlenmeyen şikayetçi throw
kıracak Visual Studio çalıştırdığınızda. Hata ayıklayıcının dışında yürütüldüğünde, kod beklediğim şeyi yapar ("Oops" ifadesini görüntüler).
Visual Studio'nun, kodun gerçek dünyada olduğu gibi yürütülmesini sağlamak için nasıl ikna edebilirim?
Lambda bir yöntem olsaydı, istenen etkiyi elde etmek için [DebuggerNonUserCode özniteliği] 'ni (http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggernonusercodeattribute.aspx) uygulayabilirsiniz. – dtb
@dtb: Bu bir cevap vermek için iyi bir değer, ama lambdayı korumamı sağlayan bir alternatif görmek istiyorum. – AnthonyWJones
sadece gözlem: Visual Studio, ar.AsyncWaitHandle.WaitOne() 'den çağrıldığında, denemede olan bir“ the.EndInvoke (ar) ”olmadığı zaman yakınıyor. –