应用程序结束而不抛出异常

时间:2011-01-18 12:09:45

标签: c# .net visual-studio-2010 debugging exception

以下代码

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 :(得分:0)

我替换了

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();

哪个更丑,但解决了我的不可解决的问题