NullReferenceException в Windows Mobile 6.5

У меня есть приложение на C# для Windows Mobile 6.5 . Проблема в том, что после большого количества времени использования (2-3 часа) иногда происходит сбой приложения с "NullReferenceException" в Main().

У меня есть все программы с try catch, тестирование в main для отлова различных исключений (ObjectDisposed, NullException и Exception), а также я пробовал с событием:

AppDomain.CurrentDomain.UnhandledException +=
     new UnhandledExceptionEventHandler(OnUnhandledException);

Приложения все еще зависают после некоторого времени использования. Кто-нибудь знает какое-либо приложение для отслеживания таких сбоев, как DebugDiag в Windows, или какой-то фрагмент кода, чтобы перехватить в журнале это исключение?

Код в основной функции выглядит следующим образом:

 static void Main()
    {
        AppDomain.CurrentDomain.UnhandledException +=
                  new UnhandledExceptionEventHandler(OnUnhandledException);
        try
        {

            CLog.EscribirEnLog("Main");               

            using (AppExecutionManager execMgr = new AppExecutionManager(appName))
            {
                if (execMgr.IsFirstInstance)
                {

                    Application.Run(new FormInicioSesion());
                    CUtiles.MatarProceso("FoxitReader.exe");
                    CUtiles.MatarProceso("pimg.exe");
                }
            }
        }
        catch (NullReferenceException ex)
        {
            CLog.EscribirEnLog("ERROR Null " + ex.StackTrace);
            Application.Exit();
        }
        catch (ObjectDisposedException e)
        {
            CLog.EscribirEnLog("ERROR  : Excepcion en main : " + e.StackTrace.ToString() + ";   " + e.InnerException.ToString() + ";  " + e.Message.ToString());

            Application.Exit();
        }
        catch (Exception e)
        {
            CLog.EscribirEnLog("ERROR  : Excepcion : " + e.StackTrace.ToString() + ";   " + e.InnerException.ToString() + ";   " + e.Message.ToString());
            Application.Exit();

        }
        finally
        {
            CLog.EscribirEnLog("Main-Finally");
        }         

    }

1 ответ

Единственный способ получить источник исключения:

  1. Оберните весь код, который может вызвать исключение, с помощью try..catch. Если вы используете StackTrace и InnerException, обертывание основной функции с помощью try catch - это хорошее начало
  2. используйте файл журнала, чтобы отметить исключение в блоке catch
  3. используйте свойства StackTrace и InnerException, чтобы получить подробную информацию о том, что такое исключение
  4. запустить ваше приложение в сеансе отладки, возможно используя удаленную отладку по сети
Другие вопросы по тегам