Как определить, когда основной поток завершается?

Что мне нужно знать:

Я хотел бы определить, когда основной поток (процесс?) Завершается, чтобы я мог гарантировать выполнение определенных действий до его завершения.

Что я нашел себя:

Я нашел событияAppDomain.DomainUnload а также .AppDomain.ProcessExitAppDomain.DomainUnload Кажется, работает с не приложениями, такими как MbUnit.AppDomain.ProcessExit кажется, работает с приложениями, но есть 3-секундный лимит времени, который я действительно нене нравится. Есть ли еще способы определить, когда AppDomain / процесс завершается?

Фон:

Я ищу такое событие, чтобы убедиться, что мой журнал сохраняется в файл, когда приложение завершается. Фактическое ведение журнала выполняется в другом потоке с использованием шаблона «производитель-потребитель», где весьма вероятно, что записи журнала могут быть помещены в очередь в памяти, и я должен убедиться, что эта очередь сохраняется в файл, когда приложение завершается.

Есть ли что-то еще, что я должен знать?

Обновить:

Изменено выше, чтобы отразить то, что я узнал сам. Я не доволен 3-секундным ограничением во время ProcessExit. Документация MSDN говорит, что она может быть расширена:

Общее время выполнения всех обработчиков событий ProcessExit ограничено, так же как общее время выполнения всех финализаторов ограничено при завершении процесса. Значение по умолчанию составляет три секунды, которые могут быть переопределены неуправляемым хостом.

Кто-нибудь знает как переопределить настройки по умолчанию?

Другие идеи также высоко ценятся!

Следовать за:

Я отправил дополнительный вопрос к этому.

Ответы на вопрос(5)

Ваш ответ на вопрос