在C#Windows服务中如何在没有计时器/线程的情况下实现无限循环?

时间:2019-02-20 12:03:01

标签: c# .net windows-services

protected override void OnStart(string[] args)
{
 while (true)
 {
 // do some work

  // idle
  Thread.Sleep(0, interval, 0)
 }
}

我无法使用计时器/线程进行服务,因为我的第三方dll无法正常工作,因此我在OnStart中尝试了while条件,它会引发错误。 我如何在没有计时器/线程的情况下实现无限循环。

1 个答案:

答案 0 :(得分:0)

您将不得不在另一个线程上进行工作,否则Windows服务管理器将假定您的服务尚未启动,因为OnStart()永不返回。

您的第三方库应该没有任何不同的工作,但是线程可能需要不同的单元模型。尝试创建STA线程(请参见Starting an STAThread in C#),看看是否可行,否则请与库的创建者联系。