【发布时间】:2022-02-16 04:18:43
【问题描述】:
我想创建一个 Windows 服务工作者,如本演练中所述:https://docs.microsoft.com/en-us/dotnet/core/extensions/windows-service。
我还希望用户看到一个托盘图标来操作服务。为此,我将创建第二个可执行文件,它在用户上下文中运行并与服务通信。
应用应如何与服务通信以执行检查服务状态、重启服务等操作?
显然,这可以使用 .NET Framework 通过在用户运行的应用程序中使用 ServiceController 与服务对话来完成(我猜它曾经是 ServiceBase 而不是 BackgroundService)。
当使用 .NET Core 的较新的 BackgroundService/service worker 模型时,等效的“ServiceController”类是什么? ServiceController 还能用吗?
【问题讨论】:
-
我在说 Mathis 在下面所说的相同的东西,只是使用了不同的词。除了凭据和环境之外,服务和常规应用程序之间没有区别。通常,服务会在机器启动并使用系统帐户运行且没有环境变量时启动。因此,当服务失败时,是由于这两个项目之一不同。
-
我的问题不清楚我到底在问什么,我已经编辑过了。我现在也相信 ServiceController 仍然可以使用更新的方式来编写服务,因为它们仍然是 Windows 服务,只是编写方式不同。如果这是真的,我稍后会回答我自己的问题。
标签: c# .net-core windows-services