.net - 在 Windows 服务上调用自定义方法

标签 .net windows-services

如何在 Windows 服务上调用自定义方法:

public class TestService:ServiceBase
{
   public TestService()
   {
      // constructor
   }

 protected override void OnStart(string[] args)
 {
    // do some work here
 }

 protected override void OnStop()
 {
    // do some work here
 }

 public void TestMethod(int arg)
 {
     // do some work here
 }
}

我知道服务的名称是“TestService”,所以我可以执行以下操作:

ServiceController sc = new ServiceController("TestService");

但是如果我执行以下操作,则不起作用

sc.TestMethod(5);       // cannot do this

我如何访问服务上的方法?我正在使用 C#

谢谢。

最佳答案

您可以通过实现 ServiceBase.OnCustomCommand 处理 Windows 服务的自定义命令,并通过调用 ServiceController.ExecuteCommand 发送它们。

但是,这种“命令”只是128到256之间的命令标识符,没有参数或返回值。

在大多数情况下,这是不够的,您必须按照其他人的建议在 Windows 服务中托管 WCF 服务。

关于.net - 在 Windows 服务上调用自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3374849/

相关文章:

c# - 始终在 Windows 服务上运行线程

c# - WeakReference 返回错误的对象

c# - 关闭包含 WebBrowser 的 WPF UserControl 时出现 FatalExecutionEngineError

delphi - 自重启服务(不询问系统)

c# - 双击启动 Windows 服务

c# - 为什么我不能安装我的服务(运行时比加载的运行时更新)?

.net - 在 Web 主机上安装和运行 .NET Windows 服务

c# - 使用 LINQ 的最佳序列

c# - MvcBuildViews 与 Razor 生成器

c# - 如何将指向 JavaScript 文件的链接添加到特定 ASP .NET MVC 页面的页眉中