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?