首页 / C#开发 / 正文

在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)

5714 发布于: 2019-04-10 读完约需4分钟

前言

在上一篇文章《C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载》中,我们了解发C#/.NET创建基于Topshelf Windows服务程序的大致流程,参数配置以及服务的安装和卸载。同时,我们也使用一个简单的定时任务演示了Topshelf服务的执行情况。

今天我将继续为大家分享关于Topshelf主题的技术文章。本文主要演示在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)。

创建一个演示应用程序

首先,打开之前我们创建的[TopshelfDemoService.sln]解决方案。在这个解决方案中再创建一个名为TopshelfDemo.Client的客户端控制台应用程序,这个客户端程序即是我们需要使用[TopshelfDemoService]守护的。只是为了演示,所以客户端并没有实际意义的逻辑和功能,在Program.cs文件中,添加如下示例代码:

仅此而已。

编写好后,生成或者运行一下这个项目。你会看到一个控制台应用程序界面,如:

实现守护程序功能

再回到项目[TopshelfDemoService]中,打开类文件HealthMonitorService.cs,其中的定时功能演示的是一个检查某系统健康状况的任务,现在我们把定时任务功能改为守护某个或者某些应用程序。

这里为了演示方便,没有重新创建服务类,在实际项目中,你也可以根据自己的情况创建不同的服务类。

修改其中代码为如下所示:

新建类DaemonApplicationInfo.csProcessorHelper.cs,编写如下代码。

DaemonApplicationInfo.cs(需守护的应用程序实体类):

ProcessorHelper.cs(进程处理帮助类):

完成以上编码后,我们将项目程序[TopshelfDemo.Client]和[TopshelfDemoService]先都关闭掉(如果已运行),接着运行项目[TopshelfDemoService],下面就是见证奇迹的时刻啦:

可以看到,守护程序[TopshelfDemoService]自动启动了客户端程序[TopshelfDemo.Client.exe],并且只会启动一个客户端实例程序。当我们把客户端关闭后,下次守护程序检测的时候客户端程序又会被重启。

遗留问题

如果你正高高兴兴地将TopshelfDemoService作为Windows服务安装,那么你可能会遇到这个问题,即守护进程正常运行,客户端程序也能正常地被守护并且启动,在Windows的”任务管理器”中也可以找到客户端的进程,但却看不到客户端程序的UI界面。

这是怎么回事呢???是不是哪里出错了呢???应该如何解决呢???

预知后事如何请听下回分解(未完待续)…

好了,今天的在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)的分享就到这里。

我是Rector,希望本文对C#/.NET开发的你有所帮助。

源代码下载

本文示例程序源代码托管地址(github): 示例源代码下载

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: 配置github公钥的操作步骤

下一篇: C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

本文永久链接码友网 » 在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册