人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

用.net創建windows service的總結(C#代碼)tojike(原作)

用.net創建windows service的總結(C#代碼)tojike(原作)

更新時間:2022-07-12 文章作者:未知 信息來源:網絡 閱讀次數:

用.net創建windows service的總結tojike(原作)

關鍵字 windows service



前言

net為創建windows service提供了專門的類庫,結束了以前開發windows service窘迫的局面。你甚至可以不用添加一行代碼,就可以用wizard生成一個windows service。

一、用wizard生成最基本的框架



此時,系統會為你生成一個框架,部分主要源代碼如下:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.ServiceProcess;

namespace WindowsService1

{

 public class Service1 : System.ServiceProcess.ServiceBase

 {



private System.ComponentModel.Container components = null;



public Service1()

{

 InitializeComponent();

}

static void Main()

{

 System.ServiceProcess.ServiceBase[] ServicesToRun;

ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };

System.ServiceProcess.ServiceBase.Run(ServicesToRun);

}

private void InitializeComponent()

{

 components = new System.ComponentModel.Container();

 this.ServiceName = "Service1";

}

protected override void Dispose( bool disposing )

{

 if( disposing )

 {

if (components != null)

{

 components.Dispose();

}

 }

 base.Dispose( disposing );

}

protected override void OnStart(string[] args)

{

 

}

 protected override void OnStop()

{

 

}

 }

}



有必要將其結構講解一下。其中,System.ServiceProcess就是關鍵所在,是引入windows service的地方。其中的OnStart()、OnStop()兩個函數能夠被windows服務管理器或者MMC調用,進行服務的啟動、停止。

二、構建一個服務

該框架提供了一個空的服務,什么也不能做。所以我們要給它添加代碼。比如,我想

做一個能夠掃描數據庫的服務,要求每次掃描完之后間隔一秒鐘,然后繼續掃描。

根據上面的要求,初步設想需要一個timer類,查命名空間,發現有二個不同的timer類,他們是:

1、System.Windows.Forms.Timer

2、System.Timers.Timer

還有一個System.Threading,帶有sleep方法

究竟該用哪個呢?

細查MSDN,會找到只有2適合,對于1來說,timer控制時間不夠精確,對于線程來說,實現比較困難。

三、規劃一下流程

基于該服務的要求,確定服務的流程如下:



為此,我們定義兩個函數:_Scan(bool _judge)、_DO_Something()

然后引入System.Timers命名空間,并且定義一個_timer對象,這些代碼如下:

1、using System.Timers; //引入System.Timers 

2、public System.Timers.Timer _timer; //定義對象_timer

3、public bool _Scan(bool _judge)

{

 //TODO



4、public void _DO_Something() 

{

 //TODO 

}



然后在InitializeComponent()里邊把_timer的Elapsed事件添加上,代碼如下:

this._timer.Elapsed += new System.Timers.ElapsedEventHandler(this._timer_Elapsed);

 定義_timer_Elapsed事件,代碼如下:

private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 

{

 _timer.Interval=1000;

_timer.Enabled=false;

if(_Scan()==true) 

 {

_DO_Something();

 }

 _timer.Enabled=true;



 最后,我們不要忘記添加windows service的installer,也是一個wizard,基本上不需要添加一行代碼。然后編譯,生成一個可執行文件。注意:因為這不是普通的可執行文件,所以不能通過雙擊實現運行,只能通過installutil YourServiceName、NET START YourServiceName、NET STOP YourServiceName、installutil/u YourServiceName來進行該服務的安裝、啟動、停止、暫停(可選)、卸載。最好是做成批處理文件,一勞永逸。^_^

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 思南县| 宁夏| 临城县| 嘉义县| 柞水县| 饶平县| 龙南县| 三明市| 济南市| 朔州市| 陇西县| 纳雍县| 宝鸡市| 绍兴县| 毕节市| 西安市| 剑川县| 姚安县| 康定县| 安新县| 长海县| 香港 | 原平市| 八宿县| 丰镇市| 崇义县| 正蓝旗| 外汇| 太康县| 新龙县| 玉门市| 宣化县| 海淀区| 泊头市| 梨树县| 卢湾区| 思茅市| 黔东| 梧州市| 岢岚县| 洛浦县|