Как имитировать исключение коррумпированного состояния в .NET 4?

Ну, в .NET 4 Microsoft добавила атрибут HandleProcessCorruptedStateExceptions:

HandleProcessCorruptedStateExceptionsAttribute Class

Я хочу проверить эту функцию. Как я могу привести свое приложение в "поврежденное состояние"?

Ответ 1

Отвинчивание собранной мусора всегда является хорошим способом:

using System;
using System.Runtime.InteropServices;


class Program {
  unsafe static void Main(string[] args) {
    var obj = new byte[1];
    var pin = GCHandle.Alloc(obj, GCHandleType.Pinned);
    byte* p = (byte*)pin.AddrOfPinnedObject();
    for (int ix = 0; ix < 256; ++ix) *p-- = 0;
    GC.Collect();   // kaboom
  }
}

Ответ 2

Просто разыщите случайное число:

    private static unsafe void AccessViolation()
    {
        byte b = *(byte*) (8762765876);
    }

или переполнить стек:

    private static void StackOverflow()
    {
        StackOverflow();
    }