C 實現Window服務實現定時傳送郵件

2021-06-09 01:50:58 字數 2865 閱讀 7150

網上有很多關於window服務的講解,本篇文章將以例項為主,解讀如何實現window服務。

環境:vs 2008

1,新建window服務

【注:刪除program.cs,因為在service1.cs中,我們會定義程式的入口,就不再需要該檔案】

2,專案會自動生成service1.cs 檔案,該類繼承自servicebase類,我這裡把檔案service1.designer.cs檔案內容,複製到service1.cs中,並刪除designer檔案。在該檔案中,重寫了方法onstart,onstop等方法。

**如下:

usingsystem;

usingsystem.collections.generic;

usingsystem.componentmodel;

usingsystem.data;

usingsystem.diagnostics;

usingsystem.linq;

usingsystem.serviceprocess;

usingsystem.text;

usingsystem.windows.forms;

usingsystem.io;

usingsystem.net.mail;

namespacesendemailservice

//////

程序入口處

///static void main();

servicebase

.run(myservice); }

///

///開始

//////protected override voidonstart(string args)

filestream

fs = new

filestream

(path,

filemode

fileaccess

.write);

streamwriter

sw = new

streamwriter

(fs);

sw.writeline("theservice is starting on"

+ datetime

.now.toshortdatestring());

sw.flush();

sw.close();

fs.close();

time = new system.timers.timer

(3000);

time.enabled = true;

time.elapsed += this.timeout;

time.start();

}} private void timeout(object sender, eventargse)

///

///結束

///protected override void onstop()

///

///暫停服務

///protected override void onpause()

//////

恢復服務

///protected override void oncontinue()

protected override void dispose(booldisposing)

base.dispose(disposing);

}private void initializecomponent()}}

3,新建安裝檔案seinstall.cs 繼承自install類

4,同service1.cs一樣,刪除designer.cs檔案

**如下:

using system;

using system.collections;

using system.collections.generic;

using system.componentmodel;

using system.configuration.install;

using system.linq;

namespace sendemailservice

//////

清理所有正在使用的資源。

//////如果應釋放託管資源,為 true;否則為 false。

protectedoverride void dispose(bool disposing)

base.dispose(disposing);}

#region 元件設計器生成的**

///

///設計器支援所需的方法 - 不要

///使用**編輯器修改此方法的內容。

///privatevoid initializecomponent());}

#endregion}}

5,編譯成功之後,我們要將生成的exe檔案,安裝到【服務】

開啟cmd-右擊【管理員身份執行】-

將路徑定位到上圖目錄下:

定位方式:1, cd.. 2, cd .. 3,cd c:\windows\microsoft.net\framework\v2.0.50727

輸入如下命令:installutil path[注:path為exe檔案所在目錄]

如installutile:\***.exe

dos介面會有提示,如果成功,則在【服務】列表會有提示

6,測試設定的郵箱是否接收到郵件,即可判定是否成功! 7,

解除安裝服務:installutil /u path

【注:如果解除安裝不成功,可以進入登錄檔刪除對應的服務即可。】

在services下面找到對應的服務,刪除即可。

【注:如果服務不能啟動,說明程式有問題。可以將編寫的程式,先放到winform程式中測試下】

window自動任務實現資料庫定時備份

原理 利用window定時任務定時cmd載入mytask.bat檔案,bat執行php.exe程式編譯執行mytask.php檔案 從而實現了資料庫的備份 mytask.bat 內容 d phpstudy php53 php.exe d www mytask.php mytask.php 內容 fi...

spring boot 定時任務實現

scheduled 使用 scheduled 非常容易,直接建立乙個 spring boot 專案,並且新增 web 依賴 spring boot starter web,專案建立成功後,新增 enablescheduling 註解,開啟定時任務 enablescheduling 開啟定時任務 pu...

Spring定時任務實現

一 spring 定時任務 component enablescheduling 可以在啟動類上註解也可以在當前檔案 public class testschedule scheduled fixedrate 1000 10 public void runsecend scheduled fixed...