Приложение заканчивается без исключения - PullRequest
0 голосов
/ 18 января 2011

следующий код

new System.Threading.Timer(state =>
{
     var query = "Select Caption from Win32_OperatingSystem";
     var objectQuery = new WqlObjectQuery(query);
     var searcher = new ManagementObjectSearcher(objectQuery);
     searcher.Get();
     //unreachable code
}, null, 0, 1000);

немедленно завершает работу моего приложения без исключений. Если вы скопируете и вставите эти строки в новый консольный проект, вы, вероятно, не сможете воспроизвести проблему. Приведенный выше код является небольшой частью моей службы Windows и, вероятно, является причиной проблемы. Приведенный выше код выполняется модульными тестами, которые работают нормально, не вызывая исключений. Последняя выполненная строка перед проблемой не всегда одинакова. Что мне делать?

1 Ответ

0 голосов
/ 18 января 2011

я заменил

this.timer = new Timer(
    TimerCallback,
    null,
    Settings.Default.CheckDelay,
    Settings.Default.CheckInterval);

от

new Thread(delegate()
    {
        Thread.Sleep(Settings.Default.CheckDelay);
        while (isRunning)
        {
            TimerCallback(null);
            Thread.Sleep(Settings.Default.CheckInterval);
        }
    }).Start();

Что страшнее, но решает мою неразрешимую проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...