在.NET環境寫編寫和注冊Windws Service
2024-07-10 13:01:39
供稿:網友
國內最大的酷站演示中心!
/*====================================================================
雖然簡單,但是我們很少寫基于這樣的應用,我偶爾看到這篇文章,就順手摘錄下來了
通過.net平臺編寫和發布簡單的windows service是一件很方便的事情.
新建一個(vb.net/c#)項目,選擇windows service應用..然后在onstart類里就可以添加代碼了.
如果想實現定時運行,活實時監聽的功能,可以用.net 提供的timer類.
以下是代碼片段.
=====================================================================*/
private void thetimer_elapsed(object sender, system.timers.elapsedeventargs e)
{
if (!excondition())
{ return;
}
try
{
thetimer.enabled = false;
mytransaction();
}
catch(exception es)
{
writelog(es.message);
}
thetimer.enabled = true;
}
//檢測執行條件
private bool excondition()
{
datetime dtnow = datetime.now;
if(this.currentmode.equals("auto"))
{
string[] frev = this.freqvalue.split(''-'');
switch( this.freq)
{
case "2"://2-每小時
if( (dtnow.minute == 59)&(dtnow.second< 30))
{
return true;
}
break;
case "4"://4-每天,
if((dtnow.hour == int.parse(frev[1]))&(dtnow.minute == int.parse(frev[2]))&(dtnow.second<30))
{
return true;
}
break;
case "8"://8-每周,
int we = int.parse(frev[0].substring(1,1));
if((dtnow.dayofweek.tostring().equals(week[we]))&(dtnow.hour == int.parse(frev[1]))&(dtnow.minute == int.parse(frev[2]))&(dtnow.second<30))
{
return true;
}
break;
case "16"://16-每月,
int mm = int.parse(frev[0].substring(1,frev[0].length-1));
if((dtnow.day == mm)&(dtnow.hour == int.parse(frev[1]))&(dtnow.minute == int.parse(frev[2]))&(dtnow.second<30))
{
return true;
}
break;
default://無觸發
return true;
break;
}
}
else
{
switch(this.startpoint)
{
case "0":
return true;
break;
default:
string[] st = startpoint.split(''-'');
if((dtnow.hour == int.parse(st[0]))&(dtnow.minute ==int.parse(st[1]))&(dtnow.second<30))
{
return true;
}
break;
}
}
return false;
}
注冊你的windows service程序.
用installutil iasserver.exe (這個文件默認在c:/winnt/microsoft.net/framework/v1.1.4322下)
installutil iasserver.exe
installutil iasserver.exe /u (卸載)