windows 服务实例
參考來(lái)源:http://blog.csdn.net/morewindows/article/details/6858216
參考來(lái)源: http://hi.baidu.com/tfantasy/item/aefa43d66b470a2b38f6f76c
剩下的都是我自己整理的。
在VS2012中新建一個(gè)Windows 服務(wù)的項(xiàng)目。然后在解決方案目錄下找到Services1.cs,切換到代碼視圖。
這里我代碼的主要工作就是開機(jī)自動(dòng)啟動(dòng)該windows服務(wù),每三秒往數(shù)據(jù)庫(kù)中插入一條數(shù)據(jù)。
代碼如下
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient;namespace stopvoice {public partial class Service1 : ServiceBase{System.Timers.Timer timer1; //計(jì)時(shí)器public Service1(){InitializeComponent();}protected override void OnStart(string[] args) //服務(wù)啟動(dòng)執(zhí)行 {timer1 = new System.Timers.Timer();timer1.Interval = 3000; //設(shè)置計(jì)時(shí)器事件間隔執(zhí)行時(shí)間timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);timer1.Enabled = true;}protected override void OnStop() //服務(wù)停止執(zhí)行 {this.timer1.Enabled = false;}private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e){//執(zhí)行SQL語(yǔ)句或其他操作//連接數(shù)據(jù)庫(kù)string SQLCONNECT = @"server=192.168.1.212;database=testdb;uid=sa;pwd=888888";SqlConnection conn = new SqlConnection(SQLCONNECT);conn.Open();//通過(guò)SqlCommand 類的ExecuteNonQuery() 來(lái)返回受影響的行數(shù)。string SQLCOMMAND2 = "insert into tb1 values(999,999);";SqlCommand sqlcmd2 = new SqlCommand(SQLCOMMAND2, conn);//也可以用下面代替// sqlcmd.ConnectionString = SQLCOMMAND2int nResult = sqlcmd2.ExecuteNonQuery();Console.WriteLine("受影響行數(shù):", +nResult);Console.ReadLine();conn.Close();}} }寫完代碼后在Service1.cs的設(shè)計(jì)界面右擊,選擇“添加安裝程序”,會(huì)出現(xiàn)兩個(gè)安裝控件,將servicesInstaller1屬性StartType設(shè)成Automatic就是開機(jī)自動(dòng)啟動(dòng),ServicesName就是在服務(wù)列表里的名稱,可以自定義。servicesProcessInstaller1的屬性設(shè)成LocalSystem。然后按F5 啟動(dòng)運(yùn)行,會(huì)報(bào)錯(cuò),提示W(wǎng)indows服務(wù)啟動(dòng)失敗,說(shuō)什么無(wú)法從命令行或調(diào)試器啟動(dòng)服務(wù)。
這個(gè)問(wèn)題先不管他,但是在我們按F5的那一剎那,這個(gè)工程文件夾的Debug目錄就生成了一個(gè)叫做Services1.exe的可執(zhí)行文件了——我們的目的已經(jīng)達(dá)成了。接下來(lái)我們要做的就是把這個(gè)程序安裝到windows服務(wù)。
現(xiàn)在我們需要一個(gè)installutil的安裝程序工具,我們可以在C:\Windows\Microsoft.NET\Framework\v4.0.30319中找到他(也許你也能在其他版本里找到它)MSDN告訴我使用 Visual Studio 命令提示符或 Windows SDK 命令提示符可以直接調(diào)用到這個(gè)Installutil.exe,我試了一下還是提示說(shuō)這貨不是內(nèi)部或外部命令,直截了當(dāng),把上面的路徑加入環(huán)境變量,然后進(jìn)入我們的CMD窗口吧。切換到剛剛那個(gè)項(xiàng)目的Debug目錄下,輸入命令installutil services1.exe(當(dāng)然也許你的可執(zhí)行文件不叫services1,我只是提醒一下),此時(shí)你在命令行輸入services.msc回車,會(huì)發(fā)現(xiàn)服務(wù)列表里多出了一個(gè)你的windows服務(wù)。將其啟動(dòng)后,每三秒就會(huì)在數(shù)據(jù)庫(kù)中插入一條數(shù)據(jù)了。
?
實(shí)驗(yàn)結(jié)束后,別忘了用installutil? /u? services1.exe 的命令卸載掉這個(gè)服務(wù)哦,或是禁用服務(wù)。另外,如果更新了程序代碼重新編譯,有了新的services1.exe,只要路徑?jīng)]變,就不需要重新安裝該服務(wù)的。
相同的功能完全可以在SQL Server的作業(yè)中進(jìn)行,而且方便快捷,當(dāng)然windows服務(wù)肯定有其他的優(yōu)勢(shì),本文只是舉個(gè)例子,所以不要用這個(gè)來(lái)板磚我了。
如果是高手,希望能解決Windows服務(wù)啟動(dòng)失敗的報(bào)錯(cuò)問(wèn)題,當(dāng)我安裝完畢windows服務(wù)以后,再次運(yùn)行還是報(bào)一樣的錯(cuò)。
轉(zhuǎn)載于:https://www.cnblogs.com/ligongzi/p/3329820.html
總結(jié)
以上是生活随笔為你收集整理的windows 服务实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: bit不是java基本类型吗_Java
- 下一篇: 基于ssm的简单员工信息管理系统