Приложение c# winforms.threadexception не срабатывает во второй раз
Всем Привет,
У меня возникла проблема при попытке поймать рекурсивное исключение, надеюсь, кто-то сможет помочь.
Вот мой код Program. cs, настроенный для обработки исключений.
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Application.ThreadException += Application_ThreadException; Application.Run(new Form1()); }
Вот пример использования.
1. пользователь загрузит форму 1, и там я ожидаю, что какое-то исключение может произойти из-за ошибок загрузки данных.
private void Form1_Load(object sender, EventArgs e) {throw new Exception("Data Load Error");}
2. Тогда это будет хит
Application_ThreadException;событие и там мы пытаемся закрыть форму и перезагрузить ее еще раз.
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { Form currentForm = GetActiveMainForm(); if (currentForm != null) { string formToOpen = currentForm.Name; currentForm.BeginInvoke(new MethodInvoker(currentForm.Close)); object form = Assembly.GetEntryAssembly().CreateInstance("ExceptionHandling." + formToOpen); (form as Form).Show(); }
}
Пока все работает нормально. Сейчас
3. Когда я перезагружаю форму, она должна выдать то же самое исключение и
Application_ThreadExceptionдолжен ли огонь и этот процесс предполагаться
это происходит рекурсивно.
Первая загрузка= & gt;ошибка= & gt;CloseAndReLoad= & gt;ошибка= & gt;CloseAndReload= & gt;ошибка.. так далее..
HERE , I am trying to check if data load fails 3 times , then close the Module/Form
Но когда он загружает форму 2-й раз(после шага 2) и выбрасывает исключение, он не собирается этого делать.
Application_ThreadExceptionобработчик событий.
Я пытаюсь выяснить первопричину такого поведения, но не могу.
Надеюсь, кто-нибудь прольет здесь немного света, если я что-то упустил или это ожидаемое поведение по умолчанию?
Заранее спасибо,
Пратхап
Что я уже пробовал:
Я уже пробовал устанавливать
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
который обрабатывает исключение (используя AppDomain.CurrentDomain.UnhandledException event) рекурсивно, но даже после обработки исключения он не будет выходить и продолжать выдавать одно и то же исключение.