Мы выяснили это сегодня ... ошибка выдается из элемента управления winforms, который мы используем для рендеринга XML в "симпатичном" формате. Похоже, ошибка выдается при вызове dispose для элемента управления. Элемент управления: System.Windows.Forms.WebBrowser ... вот информация об ошибке: System.Windows.Forms.UnsafeNativeMethods + IOleObject.SetClientSite (IOleClientSite) в System.Windows.Forms.WebBrowserBase.TransitionFromRunningToLoaded ( .Forms.WebBrowserBase.TransitionDownTo (AXState) в System.Windows.Forms.WebBrowser.Dispose (Boolean)

я есть простое приложение WinForms, которое используется для ввода тестовых случаев. С тех пор, как я обновил это приложение до .NET 4.0 и добавил новую вкладку в элемент управления вкладки для проверки XML по схеме XSD, приложение случайно зависало. Я не смог воспроизвести исключение.

Ошибка, которую получает мой QA-парень, - это общее сообщение Windows:

TestCaseViewer столкнулся с проблемой и должен быть закрыт. Приносим свои извинения за неудобства.

Чтобы попытаться добраться до настоящей ошибки, я добавил следующий код в начало метода Main программы:

        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
        Application.ThreadException += Application_ThreadException;

Обработчики событий выглядят так:

    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
    {
        try
        {
            MessageBox.Show(e.Exception.ToString(), @"Thread Exception", 
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        finally 
        {
            Application.Exit();    
        }
    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        try
        {
            var ex = (Exception)e.ExceptionObject;
            MessageBox.Show(ex.ToString(), @"Unhandled Exception",
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        finally 
        {
            Application.Exit();    
        }
    }

К сожалению, это не помогло, и что бы ни выглядело, ошибка продолжает делать это таким образом, что генерирует необработанную ошибку, которая пузырится в ОС.

Кто-нибудь может дать мне какие-нибудь другие идеи о ловушке этого исключения?

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

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