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 ответ
Единственный способ получить источник исключения:
- Оберните весь код, который может вызвать исключение, с помощью try..catch. Если вы используете StackTrace и InnerException, обертывание основной функции с помощью try catch - это хорошее начало
- используйте файл журнала, чтобы отметить исключение в блоке catch
- используйте свойства StackTrace и InnerException, чтобы получить подробную информацию о том, что такое исключение
- запустить ваше приложение в сеансе отладки, возможно используя удаленную отладку по сети