Pourquoi AccessViolationException ne peut pas être pris par .NET4.0

Il est vraiment intéressant de noter que le code C# suivant se crash sur .NET4.0 mais bon sur .NET2.0.

De code C#

class Program
{
    static void Main(string[] args)
    {
        try
        {
            ExceptionTest();
            Console.WriteLine("Done!");
        }
        catch (Exception e)
        {
            Console.WriteLine("Error !!!");
            Console.WriteLine(e.Message);
        }
    }

    [DllImport("badapp")]
    private static extern int ExceptionTest();
}

Code C++

extern "C" __declspec(dllexport) int ExceptionTest()
{
    IUnknown* pUnk = NULL;
    pUnk->AddRef();
    return 0;
}

Si la compilation ci-dessus le code C# contre .NET2.0, tout fonctionne bien. Seulement de compiler contre .NET4.0 il crash au moment de l'exécution.

Je suis soupçonner une exception système de cliquet a été changé depuis .NET4.0. Des idées?

InformationsquelleAutor Miles Chen | 2012-09-25