Questo codice:
using
System;
using System.Threading;
namespace
CrashCS
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(HandleUnhandledException);
ThreadStart ts = new ThreadStart(Program.MyMethod);
Thread t = new Thread(ts);
t.Start();
Console.ReadLine();
}
private static void MyMethod()
{
throw new NotImplementedException();
}
private static void HandleUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine("UnhandledException");
}
}
}
Col framework 1.1 visualizza "UnhadledException"
Col framework 2.0 nella mia virtual machine visualizza "UnhandledException" e poi crasha.
Stupito della cosa ho segnalato il tutto su LadyBug e la risposta è stata:
"This is a by-design change made in the Whidbey CLR to help developers find bugs in their applications instead of silently hiding them.
If for some reason the legacy behavior is required for a given application, the following config file entry can be added to force the CLR to silently swallow the exception:"
<configuration>
<runtime>
< legacyUnhandledExceptionPolicy =1/>
</runtime>
</configuration>
A parte l'approccio del tutto discutibile, in Google ho trovato un altro riferimento all'attributo citato (che non sono riuscito ad applicare e del quale non c'è traccia in MSDN...) che aprirebbe scenari interessanti.
Qualcuno ne sa di piu?