Windows Mobile 6.5上的NullReferenceException

时间:2016-05-25 13:30:39

标签: c# .net windows-mobile windows-mobile-6.5

我在Windows Mobile 6.5的C#中有一个应用程序。问题是经过大量的使用时间(2-3小时)后,有时应用程序崩溃了" NullReferenceException"在Main()中。

我拥有try catch的所有程序,在main中测试以捕获不同的异常(ObjectDisposed,NullException和Exception),并且我也尝试过该事件:

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

应用程序在使用一段时间后仍然悬挂。有没有人知道任何应用程序来监视像Windows中的DebugDiag这样的崩溃,或者在日志中捕获这个异常的一些代码?

主要功能中的代码如下:

 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 个答案:

答案 0 :(得分:0)

获取异常来源的唯一方法是:

  1. 使用try..catch包装可能引发异常的所有代码。如果使用 StackTrace和InnerException用try包装main函数 赶上是一个好的开始
  2. 使用日志文件来记录catch块中的异常
  3. 使用StackTrace和InnerException属性来获取详细信息 关于例外情况的信息
  4. 在调试会话中运行您的应用程序,可能使用远程调试 网络