Windows服務簡單應用之監聽檔案夾內的檔案

來源:互聯網
上載者:User

  Windows服務還是比較強大的,這種應用程式沒有使用者介面,可以隨系統的啟動而運行起來,任何使用者訊息可以被寫進Windows事件記錄裡,也可以將服務設定為本地服務,不受使用者限制,可以對服務進行暫停繼續等,但是如果服務是做即時監控的話,還是建議將服務的暫停功能禁掉。

  優點說了一堆了,看看實戰吧,所謂的實戰也是從別人的部落格中學習過來的,我這裡就借用一下夢幻Dot Net的一篇部落格——用.Net開發Windows服務初探。講的比較詳細了,我在這裡是要說一下我在建立Windows服務時遇到的一些問題,分享給大家。

————————————————————————————————————————————————————————————————————

  首先要說的是安裝Windows服務:

    安裝服務需要用到InstallUtil.exe程式,將編譯好的服務應用程式的路徑拷貝下來,進入CMD,找到服務應用程式所在目錄,運行"InstallUtil YourServiceName.exe"。

    問題就來了,如果是在系統內容變數中未做設定,這裡就會報錯了,提示InstallUtil命令不可用,那就配置一下環境變數吧,一般目錄都在“C:\Windows\Microsoft.NET\Framework\v4.0.30319”,如果項目版本是4.0的話就設定這個路徑吧,如果這個設定的版本低,還會報出版本比應用程式版本低的錯誤。

    上面的問題如果不想麻煩也可以,單擊“開始-->所有程式-->Microsoft Visual Studio 2010-->Visual Studio Tools-->Visual Studio 命令提示(2010)”,後續一樣。

    還有一點要注意的是重新編譯的服務都要先卸載掉原來的Windows服務,然後再安裝重新編譯好的Windows服務。

  其次要說的是EventLog的屬性設定:

    在我的項目中添加了EventLog控制項,他有一個屬性EnableRaisingEvents,Microsoft給出的解釋是“指示該組建是否監視事件記錄的更改情況”,預設為False,如果改為True則安裝好Windows服務之後無法啟動該服務。具體原因暫時不清楚,也許和其他設定有關係吧,如果有明白的童鞋還請指教。

  最後貼上我的源碼供大家分享:(不顯示行號了,為了大家拷貝方便)

    

     private bool servicePaused = false;
     /// <summary>
/// 啟動服務
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
eventLog.WriteEntry(" 這個服務在:" + DateTime.Now.ToString() + "被啟動了!");

fileSystemWatcher.EnableRaisingEvents = true;//開始監聽
fileSystemWatcher.IncludeSubdirectories = true;

fileSystemWatcher.Changed += new FileSystemEventHandler(OnFileChanged);
fileSystemWatcher.Created += new FileSystemEventHandler(OnFileCreated);
fileSystemWatcher.Deleted += new FileSystemEventHandler(OnFileDeleted);
fileSystemWatcher.Renamed += new RenamedEventHandler(OnFileRenamed);
}
     /// <summary>
        /// 停止服務
        /// </summary>
        protected override void OnStop()
        {

        }


        private void OnFileChanged(Object source, FileSystemEventArgs e)
        {  
      if (servicePaused == false)
           {
                eventLog.WriteEntry(e.Name + " 這個檔案在:" + DateTime.Now.ToString() + "被改動了!");
           }        
        }

        private void OnFileRenamed(Object source, RenamedEventArgs e)
        {
            if (servicePaused == false)
            {
                eventLog.WriteEntry(e.Name + " 這個檔案在:" + DateTime.Now.ToString() + "被重新命名了!");
            }
        }

        private void OnFileCreated(Object source, FileSystemEventArgs e)
        {
            if (servicePaused == false)
            {
                eventLog.WriteEntry(e.Name + " 這個檔案在:" + DateTime.Now.ToString() + "被建立了!");
            }
        }

        private void OnFileDeleted(Object source, FileSystemEventArgs e)
        {
            if (servicePaused == false)
            {
                eventLog.WriteEntry(e.Name + " 這個檔案在:" + DateTime.Now.ToString() + "被刪除了!");
            }
        }


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.