我希望我的服务从线程中终止自身

本文关键字:终止 线程 我的 服务 我希望 | 更新日期: 2023-09-27 18:17:23

我有一个服务,可以启动一个处理呼叫的服务器。服务器只能在特定条件下启动,服务应尝试启动服务器几分钟,然后再放弃。因此,我仅使用服务接口方法来启动处理"尝试启动服务器并在失败时重试"逻辑的线程。但是现在我需要添加服务的终止,如果服务器在 5 分钟后未成功启动。问题是,我不知道如何将调用封送回服务的"主"线程,因为据我了解,它不是我可以使用调度程序的 STA 线程。我的理解是,为了能够System.Exit(1)我的服务,我必须这样做。有什么建议吗?

澄清要点:

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

我希望我的服务从线程中终止自身

我给你一个提示,如果你没有设法实现它,我稍后会用更多详细信息来编辑它。当您想要停止服务时,应调用 ServiceBase.Stop 方法。

启动一个任务以执行"尝试启动服务器并在失败时重试",并添加一个延续(或传递Stop作为Action参数(,该延续将在任务完成时根据结果执行(或者,如果您在启动失败时引发异常,则验证Task.IsFaulted并调用Stop()如果为 true(。