Здравствуйте, vaa, Вы писали:
vaa>Вот думаю, если добавить в Main обработчики смогу ли я словить это исключение(в .net этот косяк исправлен видимо не будет)
Сможешь. Причем тебе нужно в нем снять стектрейсы для всех потоков. Проблема из-за того, что хэш-табличка меняется в другом потоке, в то время как упавший выполняет
s_contextHash.Values.CopyTo(ctxs, 0);
По фиксили они
не везде, кстати. Вот доступ без лочки:
internal static ThreadContext FromId(uint id)
{
ThreadContext context = (ThreadContext)s_contextHash[id];
if (context is null && id == Kernel32.GetCurrentThreadId())
{
context = new ThreadContext();
}
return context;
}
А вам точно нужен честный выход из приложения? У вас там какие-то данные сохраняются? Если нет, можешь просто кильнуть процесс вызвав:
Environment.Exit(0);
А так вам нужно перед тем как инициировать выход завершить все рабочие потоки и сделать так, чтобы новые не создавались, а потом уже звать:
AppProgram.Stop()