У меня довольно сложное приложение на c #, которое работает на Windows Mobile 5.0 и более поздних версиях.Он включает код, который использует 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.
Любая помощь или предложения будут оценены, поскольку у меня нет идей и вещей, которые нужно проверить.