c#实现简单的windows服务实例–清除图片缓存定时器服务

原创 cheny  2017-08-02 00:58  阅读 160 次 评论 0 条
摘要:

最近Android项目上的事情繁杂,心累,加上个人的懒惰已经很久没出Android相关的文章。不过这次还是让大家失望了,这是关于C#方面的折腾—-C#创建windows系统服务实例。不过不要担心,不出意外的话,不久的下篇应该是关于Android方面自定义导览地图或边下边播的音乐播放器的实现。

最近Android项目上的事情繁杂,心累,加上个人的懒惰已经很久没出Android相关的文章。不过这次还是让大家失望了,这是关于C#方面的折腾----C#创建windows系统服务实例。不过不要担心,不出意外的话,不久的下篇应该是关于Android方面自定义导览地图或边下边播的音乐播放器的实现。

言归正传,下面我们以Visual Studio2015版本工具为例:

新建项目---->

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第1张

依次按以下步骤创建windows服务项目:

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第2张

建议选择较低版本的.NET Framework 4版本,以便兼容更低windows系统版本,当然也可以选择更低的版本,去巨硬(MicroSoft)公司官网下载安装即可。项目名,项目路径名(主要是文件夹名)尽量不要带中文,也不要存在空格(尤其CMD命令安装的时候,会出现找不到文件路径,因为空格相邻两边被成了两个dos命令语句),编程的基本常识,切记。

创建后,右边解决方案资源管理器找到DeletePicTimerService项目下的Service1.cs文件(类似于java方面的”类名.java”文件),这便是Windows服务程序入口,选中--右键---打开--->

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第3张

左边Service1.cs[设计窗口]任意空白处右键---添加安装程序--->

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第4张

会生成serviceInstaller1和serviceProcessInstaller1,选择serviceInstaller1,右下边出现其相关属性编辑小视窗。依次修改Description(服务描述,可选),ServiceName(服务名,可选),StartType(开启类型:开机自启,开机延迟自启,手动开启服务等特性,可选):

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第5张

同理选择serviceProcessInstaller1,修改Account为LocalSystem(必选):

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第6张

回到Service1.cs,右键---查看代码--->

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第7张

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第8张

代码中,Service1()为初始化构造方法,, OnStart(string[] args) 和OnStop ()在服务开启和停止时分别触发调用,以此特性编写符合自己需求的业务逻辑。这里贴出简单地实例Demo的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;

namespace DeletePicTimerService
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            try
            {
                String url = "C:\\Users\\Cheny\\Desktop\\pictures";//要删除文件所在的目录路径
                DirectoryInfo foler = new DirectoryInfo(url);//路径对象
                while (true)
                {
                    DateTime nowTime = DateTime.Now;//当前时间
                    FileInfo[] files = foler.GetFiles("*.jpg");//拿到拓展名为jpg的图片文件对象数组
                    foreach (FileInfo file in files)//遍历所有jpg图片文件
                    {
                        TimeSpan timeSpan = nowTime - file.LastWriteTime; //获取当前时间与文件最后修改时间的时间域
                        if (timeSpan.TotalHours >= 5)//最后修改时间超过5小时的图片予以删除
                        {
                            file.Delete();//删除图片
                        }
                    }
                    //休眠十分钟
                    Thread.Sleep(1000 * 60 * 10);//休眠10分钟,
                }
            }
            catch
            {
            }
        }
        protected override void OnStop()
        {
        }
    }
}

 

Demo逻辑代码编辑完成,生成exe文件,选择DeletePicTimerService,右键---生成--->

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第9张

此时会在项目的bin\debug目录下生成对应的可执行exe文件,右键---在文件资源管理器中打开,并依次展打开bin\Debug目录:

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第10张

可以看到DeletePicTimerService.exe便是我们需要的window服务可执行文件,下面着手安装该程序文件,右键电脑桌面windows系统菜单按钮,选择并运行“windows PowerShell(管理员)”(以管理员身份运行cmd命令提示符):

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第11张

依次执行以下命令:

     cd    C:\Windows\Microsoft.NET\Framework\v4.0.30319\  //切换至服务安装工具所在的目录
     .\InstallUtil.exe F:\vs_workspace\DeletePicTimerService\bin\Debug\ DeletePicTimerService.exe  //安装服务

 

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第12张

因为我创建服务项目时选择的是.NET Framework 4版本,所以要选择v4.0.30319下的InstallUtil.exe工具。

上图可以看到服务已安装成功!   打开windows服务管理界面(这个不多说),找到这个服务:

c#实现简单的windows服务实例--清除图片缓存定时器服务 折腾 第13张

三个红圈就上文提到的Description(服务描述),ServiceName(服务名),StartType (启动类型)

服务的开启和停止以及设置启动类型可以直接在该面板上操作,不需要敲命令那么麻烦。

拓展:  卸载服务

依次执行以下命令:

     cd    C:\Windows\Microsoft.NET\Framework\v4.0.30319\  //切换至服务安装工具所在的目录
     .\InstallUtil.exe  -u F:\vs_workspace\DeletePicTimerService\bin\Debug\ DeletePicTimerService.exe  //卸载服务

其实就是安装服务的命令中间多了“-u”参数(uninstall)。

 

本文地址:https://www.icheny.cn/c%e5%ae%9e%e7%8e%b0%e7%ae%80%e5%8d%95%e7%9a%84windows%e6%9c%8d%e5%8a%a1%e5%ae%9e%e4%be%8b-%e6%b8%85%e9%99%a4%e5%9b%be%e7%89%87%e7%bc%93%e5%ad%98%e5%ae%9a%e6%97%b6%e5%99%a8%e6%9c%8d%e5%8a%a1/
关注我们:加我微信:扫描二维码乘月网的微信号,微信号:ausboyue
版权声明:本文为原创文章,版权归 cheny 所有,欢迎分享本文,转载请保留出处!
PREVIOUS:已经是最后一篇了

发表评论


表情