【问题标题】:Is System.ServiceProcess.ServiceController.Stop() synchronous or asynchronous?System.ServiceProcess.ServiceController.Stop() 是同步的还是异步的?
【发布时间】:2018-01-10 13:01:00
【问题描述】:

... 或.Start()

MSDN 对此只字未提。 There are no relevant google results 触及这个问题。 Reference source 出于某种原因不包含方法体。

在测试它时,很难说,因为我愿意停止的服务都很快。

编辑:我不是在问它是否实现了其中一种异步模式——显然不是;我只是想知道该方法是否发送了停止服务的请求但不等待收到回复,就像Process.CloseMainWindow()

【问题讨论】:

  • 但是您可以看到方法Async结尾,并且它们在参考源中是空的。这两个指标应该够了吧?
  • 并非所有异步方法都以异步结尾。我不是在问这个方法是否实现了异步等待;显然没有。
  • @RickvandenBosch -- 看我的回答。
  • 感谢您的更新。 ServiceController.Stop() 触发服务停止,但不等待,这听起来似乎是合理的。可能评论太快了...:/

标签: .net service servicecontroller


【解决方案1】:

好的,我终于可以回答我自己的问题了,答案是:对System.ServiceProcess.ServiceController.Stop() 的调用是异步,即控制立即返回,而服务本身可能需要更长的时间才能完成真的停下来。

我通过构建自己的服务确认了这一点,该服务在停止时会等待 20 秒才能完成。但是,对Stop() 的调用会立即返回。

【讨论】:

    猜你喜欢
    • 2020-05-15
    • 2020-02-21
    • 2013-02-25
    • 2012-12-30
    • 2014-04-25
    • 1970-01-01
    • 2019-01-17
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多