c#實現簡單的windows服務實例--清除圖片緩存定時器服務

版權說明 : c#實現簡單的windows服務實例--清除圖片緩存定時器服務於當前CSDN博客乘月網屬同一原創,轉載請說明出處,謝謝。


         最近Android項目上的事情繁雜,心累,加上個人的懶惰已經很久沒出Android相關的文章。不過這次還是讓大家失望了,這是關於C#方面的折騰----C#創建windows系統服務實例。不過不要擔心,不出意外的話,不久的下篇應該是關於Android方面自定義導覽地圖或邊下邊播的音樂播放器的實現。

言歸正傳,下面我們以Visual Studio2015版本工具爲例:

         新建項目---->


         依次按以下步驟創建windows服務項目:


         建議選擇較低版本的.NET Framework 4版本,以便兼容更低windows系統版本,當然也可以選擇更低的版本,去巨硬(MicroSoft)公司官網下載安裝即可。項目名,項目路徑名(主要是文件夾名)儘量不要帶中文,也不要存在空格(尤其CMD命令安裝的時候,會出現找不到文件路徑,因爲空格相鄰兩邊被成了兩個dos命令語句),編程的基本常識,切記。

         創建後,右邊解決方案資源管理器找到DeletePicTimerService項目下的Service1.cs文件(類似於java方面的”類名.java”文件),這便是Windows服務程序入口,選中--右鍵---打開--->


         左邊Service1.cs[設計窗口]任意空白處右鍵---添加安裝程序--->


         會生成serviceInstaller1和serviceProcessInstaller1,選擇serviceInstaller1,右下邊出現其相關屬性編輯小視窗。依次修改Description(服務描述,可選),ServiceName(服務名,可選),StartType(開啓類型:開機自啓,開機延遲自啓,手動開啓服務等特性,可選):


         同理選擇serviceProcessInstaller1,修改Account爲LocalSystem(必選):



         回到Service1.cs,右鍵---查看代碼--->




         代碼中,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,右鍵---生成--->


         此時會在項目的bin\debug目錄下生成對應的可執行exe文件,右鍵---在文件資源管理器中打開,並依次展打開bin\Debug目錄: 


         可以看到DeletePicTimerService.exe便是我們需要的window服務可執行文件,下面着手安裝該程序文件,右鍵電腦桌面windows系統菜單按鈕,選擇並運行“windows PowerShell(管理員)”(以管理員身份運行cmd命令提示符):


         依次執行以下命令:

     cd    C:\Windows\Microsoft.NET\Framework\v4.0.30319\    //切換至服務安裝工具所在的目錄
     .\InstallUtil.exe F:\vs_workspace\DeletePicTimerService\bin\Debug\ DeletePicTimerService.exe  //安裝服務

         因爲我創建服務項目時選擇的是.NET Framework 4版本,所以要選擇v4.0.30319下的InstallUtil.exe工具。


         上圖可以看到服務已安裝成功!   打開windows服務管理界面(這個不多說),找到這個服務:


         三個紅圈就上文提到的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)。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章