【发布时间】:2012-02-23 23:47:30
【问题描述】:
我有一个在 Windows Mobile 5.0 及更高版本上运行的相当复杂的 c# 应用程序。它包括使用 SQL CE 的代码,在单独的线程上更新 GPS 坐标,并且还在单独的线程中使用 Microsoft Sync Framework 在后台同步到服务器。该应用程序通常运行良好,但在生产中每隔一段时间,应用程序主窗口就会消失。
我在 Program.cs 文件中有如下代码:
static class Program
{
private static NLog.Logger _logger = NLog.LogManager.GetLogger("Program");
[MTAThread]
static void Main()
{
try
{
_logger.Info("Program V {0} starting.", Utility.AppVersion);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new MainForm());
_logger.Info("After Application.Run().");
}
catch (Exception ex)
{
_logger.ErrorException("Exception occurred.", ex);
}
}
static void MobileDevice_Hibernate(object sender, EventArgs e)
{
_logger.Info("Hibernate was received.");
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
_logger.ErrorException("Unhandled exception was thrown", e.ExceptionObject as Exception);
}
}
我按预期看到了启动信息日志,当应用程序消失时,我还收到After Application.Run() 消息。但是我没有收到 MainForm.Closing 事件中记录的消息,所以它似乎永远不会被调用。我也没有从Application.Run 或UnhandledException 处理程序周围的异常处理程序记录任何异常。我认为这可能与内存不足/内存不足有关,这就是为什么我也连接了Hibernate 事件。但我也没有收到 Hibernate 事件。
任何帮助或建议将不胜感激,因为我没有想法和要检查的东西。
【问题讨论】:
标签: c# multithreading windows-mobile microsoft-sync-framework