Наконец блок не работает?

Хорошо, это странная проблема, и я надеюсь, что кто-то сможет пролить свет. У меня есть следующий код:

static void Main(string[] args)
{
    try
    {
        Console.WriteLine("in try");
        throw new EncoderFallbackException();
    }
    catch (Exception)
    {
        Console.WriteLine("in Catch");
        throw new AbandonedMutexException();
    }
    finally
    {
        Console.WriteLine("in Finally");
        Console.ReadLine();
    }
}

СЕЙЧАС, когда я компилирую его для целевой версии 3.5 (2.0 CLR), появляется всплывающее окно с сообщением «XXX перестал работать». Если я сейчас нажму на кнопку Отмена , она запустится, И если я подожду, пока она не закончится, ищу и нажму кнопку Закрыть программу , она также запустится.

Что интересно и сбивает с толку, это ЕСЛИ я сделаю то же самое, что скомпилировано с 4.0. Нажатие кнопки Отмена запустит блок finally, а нажатие на кнопку Закрыть программу не приведет к .

У меня вопрос: почему наконец-то работает на 2.0, а не на 4. 0 при нажатии кнопки Закрыть программу ? Каковы последствия этого?

РЕДАКТИРОВАТЬ: Я запускаю это из командной строки в режиме выпуска (встроенный в режиме выпуска) в 32-разрядной версии Windows 7. Сообщение об ошибке: первый результат ниже выполняется на 3.5, закрывается после того, как Windows ищет проблему, второй - когда я запускаю его на 4.0 и делаю то же самое.

alt text

18
задан jquery auth 16 November 2010 в 13:22
поделиться