以下代码
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服务的一小部分,它可能是问题的原因。上述代码由单元测试执行,单元测试正常运行而不会抛出异常。 问题发生前最后执行的行并不总是相同的。 我该怎么办?
答案 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();
哪个更丑,但解决了我的不可解决的问题