我希望我的服务从一个线程中终止自己

时间:2016-11-11 14:18:07

标签: c# .net multithreading

我有一个服务来旋转处理呼叫的服务器。服务器只能在特定条件下启动,服务应该尝试在放弃之前启动服务器几分钟。因此,我只使用服务接口方法来启动一个处理"尝试启动服务器的线程,如果失败" -logic则重试。但是现在我需要添加服务的终止,如果服务器在5分钟之后没有成功启动。问题是,我不知道如何整理回拨给服务的电话"主要"线程,因为,据我所知,它不是一个STA线程,我只能使用一个调度程序。我的理解是,为了能够System.Exit(1)我的服务,我必须这样做。有什么建议吗?

澄清要点:

  • 我确实启动了一个基本上就是服务主线程的线程。但是,终止该线程并不会使服务显示为已停止。

1 个答案:

答案 0 :(得分:0)

我正在给你一个提示,如果你没有设法实现它,我将在稍后编辑它,并提供更多细节。如果要停止服务,则应调用ServiceBase.Stop方法。

启动任务以执行“尝试启动服务器并在失败时重试”并添加一个继续(或传递Stop作为Action参数),该任务将在任务完成时执行结果(或者,如果您在未能启动时抛出异常,则验证Task.IsFaulted并调用Stop()如果为真。)