




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用C#開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用摘要 本文將向你展示如何用C#開發(fā)一個(gè)Windows服務(wù)來記錄系統(tǒng)使用情況。每一個(gè)人都想知道他們每天在什么時(shí)間啟動(dòng)和關(guān)閉自己的系統(tǒng),以及系統(tǒng)每天運(yùn)行了多少時(shí)間。如果用一個(gè)DataGrid控件來顯示系統(tǒng)啟動(dòng)、關(guān)閉及所消耗的時(shí)間將是一個(gè)不錯(cuò)的主意。在本文中,我提供了一種方法來實(shí)現(xiàn)這一目標(biāo)-使用C#開發(fā)一個(gè)Windows服務(wù)。其實(shí),每個(gè)人都了解一點(diǎn)Windows服務(wù)。但是,為了介紹之目的,我僅盡可能少得解釋一下Windows服務(wù)。然后,我們來討論如何設(shè)計(jì)一個(gè)這樣的應(yīng)用程序。一、 什么是Windows服務(wù)?其實(shí),Windows服務(wù)只是運(yùn)行于后臺的并不要求我們了解
2、的一種進(jìn)程而已。而且,它們的絕大部分并不要求用戶交互。如果我們在"開始"菜單的"運(yùn)行"命令行下輸入"services.msc"并回車,那么我們就可以看到在我們當(dāng)前的系統(tǒng)中運(yùn)行的服務(wù)情況。其中,有一些服務(wù)是當(dāng)系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)的。但是,也有一些服務(wù)必須在我們的手工啟動(dòng)下才能運(yùn)行。二、 Windows服務(wù)的優(yōu)點(diǎn)1. 能夠自動(dòng)運(yùn)行。2. 不要求用戶交互。3. 在后臺運(yùn)行。一般情況下,Windows服務(wù)被用于耗費(fèi)時(shí)間很多的進(jìn)程中,例如備份數(shù)據(jù)庫,等等?,F(xiàn)在,我們要設(shè)計(jì)一個(gè)Windows服務(wù)來實(shí)現(xiàn)記錄你的系統(tǒng)啟動(dòng)和關(guān)閉需要的時(shí)間。我使用Visu
3、al Studio 2003設(shè)計(jì)了這個(gè)應(yīng)用程序。三、 設(shè)計(jì)Windows服務(wù)第一步:首先打開Visual Studio并且選擇Visual C#工程。選擇模板類型為Windows服務(wù),并命名為Monitoring,如下圖所示:選擇模板類型為Windows服務(wù)第二步:按F7鍵打開代碼窗口。然后,加入對System.IO命名空間的引用,以便把系統(tǒng)定時(shí)功能編寫到一個(gè)文件中。下一步,用Monitoring一詞替換所有出現(xiàn)的Service1一詞。之后,轉(zhuǎn)入設(shè)計(jì)模式(按鍵shift+F7)。選擇Solution Explorer(按鍵Ctrl+Alt+L)。點(diǎn)擊Service1.cs并且命名它為Monit
4、oring.cs。之后,轉(zhuǎn)入代碼窗口。在OnStart事件中加入下列代碼,如下圖所示:在OnStart事件中加入代碼在OnStart事件中實(shí)現(xiàn)的功能首先,在c盤上創(chuàng)建一個(gè)xml文件,并命名為file1。然后,在這個(gè)文件中建立如下代碼:?xml version="1.0" encoding="utf-8" standalone="no"?times然后,關(guān)閉它。我創(chuàng)建了一個(gè)服務(wù),它能夠在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)并且記錄下啟動(dòng)時(shí)間。當(dāng)系統(tǒng)關(guān)閉時(shí),它也關(guān)閉。而且,它會(huì)記錄下關(guān)閉時(shí)間和系統(tǒng)中所花費(fèi)的時(shí)間。首先,我要?jiǎng)?chuàng)建一個(gè)StreamWriter來
5、把系統(tǒng)啟動(dòng)時(shí)間寫入file1.xml文件中。在把代碼復(fù)制到你的OnStart事件后,正好在Monitoring構(gòu)造器的上面創(chuàng)建一個(gè)公共變量temp,如下圖所示:創(chuàng)建一個(gè)公共變量temp此后,把這部分代碼復(fù)制到你的代碼窗口: 再把下面代碼復(fù)制到OnStart事件中,如下圖所示:StreamWriter writer=File.AppendText("d:file1.xml");writer.Write("time");writer.WriteLine("Date "+ (DateTime.Now.ToString("dd-MM
6、-yy")+"/Date");writer.WriteLine("started "+ (DateTime.Now.ToString("t")+"/started");temp=DateTime.Now; writer.Close();復(fù)制到OnStart事件在OnShutdown事件中實(shí)現(xiàn)的功能當(dāng)系統(tǒng)要關(guān)閉時(shí),我使用一個(gè)StreamWriter再次打開file1.xml-它將記下系統(tǒng)關(guān)閉時(shí)間,還將記下在系統(tǒng)啟動(dòng)和關(guān)閉之間所花費(fèi)的時(shí)間跨度。我在OnStart和OnShutdown事件中使用了一個(gè)temp變
7、量。在OnStart中,它用于存儲啟動(dòng)時(shí)間。然后,它被再次用于OnShutdown事件中來記下系統(tǒng)啟動(dòng)和關(guān)閉之間所花費(fèi)的時(shí)間間隔。然后,我們必須配置我們的Windows服務(wù)以便安裝和運(yùn)行。因此,首先轉(zhuǎn)到設(shè)計(jì)視圖中,并選擇屬性窗口(可以按下F4)。把CanStop和CanShutdown設(shè)置為true。在安裝之前,我們必須要安裝一個(gè)安裝程序。右擊設(shè)計(jì)視圖窗口,然后選擇"Add Installer"。然后,它將顯示ProjectInstaller.cs。在這個(gè)文件中,serviceInstaller1和serviceProcessInstaller1都存在。轉(zhuǎn)到serviceP
8、rocessInstaller1屬性處:· 把Account設(shè)置為LocalSystem。· 然后,轉(zhuǎn)到serviceInstaller1屬性處。· 把DisplayName和ServiceName設(shè)置為Monitoring。· 設(shè)置啟動(dòng)類型(StartType)為automatic。請參考下圖:參考設(shè)置參考設(shè)置然后,轉(zhuǎn)到VS.NET的命令提示符下。在控制臺下,轉(zhuǎn)到服務(wù)的Debug文件夾下:輸入"InstallUtil Monitoring.exe"如果它顯示"Commit Phase Completed Successfu
9、lly",則說明服務(wù)被成功安裝。然后,重啟系統(tǒng)以啟動(dòng)服務(wù)。在重啟之后,打開file1.xml文件,它記錄了系統(tǒng)的開始時(shí)間。如果關(guān)閉系統(tǒng),它將記錄下系統(tǒng)的關(guān)閉時(shí)間和使用系統(tǒng)的時(shí)間長度。通過這一部分,我們已經(jīng)完成了記錄下系統(tǒng)所消耗的時(shí)間。接下來,我們將創(chuàng)建一個(gè)web應(yīng)用程序以便在一個(gè)Grid控件中顯示xml數(shù)據(jù)。在下一部分中,我將解釋如何抽取這個(gè)xml文件數(shù)據(jù)并且在一個(gè)DataGrid控件中顯示它。四、 用C#創(chuàng)建一個(gè)Web應(yīng)用程序在這一部分中,我們用C#創(chuàng)建一個(gè)web應(yīng)用程序,并命名為SystemMonitor。加入下面命名空間:using System.IO;using System
10、.Xml;using System.Text;之后,把DataGrid和Label控件拖動(dòng)到頁面上,如下圖所示:把DataGrid和Label控件拖動(dòng)到頁面上把下列代碼復(fù)制到Page_Load事件中:File.Copy("c:file1.xml","c:temp1.xml",true);StreamWriter writer1=File.AppendText("c:temp1.xml");writer1.Write("shutdownundefined/shutdown");writer1.Write("
11、timespentundefined/timespent");writer1.Write("/time");writer1.WriteLine("/times");writer1.Close();DataSet ds=new DataSet();ds.ReadXml("c:temp1.xml");TimeSpan t=new TimeSpan();DataGrid1.DataSource=ds;DataGrid1.DataBind();XmlTextReader reader=new XmlTextReader("
12、c:temp1.xml");while(reader.Read()if(reader.NodeType=XmlNodeType.Element)if(reader.Name="timespent")string temp11=reader.ReadInnerXml().ToString();if(temp11!="undefined")temp11=temp11.Replace(":",".");temp11=temp11.Replace(" ","");durat
13、ion +=Convert.ToDouble(temp11);Response.Write("Total Duration is : ");double temp122=Convert.ToDouble(duration);string hr=temp122.ToString();string hrstr=hr.Substring(0,hr.IndexOf(".");Response.Write(hrstr.ToString()+" Hours");string mins=hr.Substring(hr.IndexOf(".")+1,(hr.Length -hr.IndexOf(".")-1);Response.Write(" "+mins.ToString()+" Minutes");reader.Close();File.Delete("c:temp1.xml");最后把下面的聲明粘貼到Page_Load
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東陽江小升初數(shù)學(xué)試卷
- ??谥袑W(xué)七升八數(shù)學(xué)試卷
- 廣州天河中考數(shù)學(xué)試卷
- 醫(yī)院藥房管理課件
- 健康管理師送課件
- 2025年中國互聯(lián)網(wǎng)+電火鍋市場競爭格局分析及投資方向研究報(bào)告
- 2025年中國云母電容器行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2025年中國臨時(shí)租用收費(fèi)系統(tǒng)行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 單位工程開工報(bào)告模板
- 2025年中國封裝測試行業(yè)市場全景評估及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2024年河北省香河縣事業(yè)單位公開招聘教師崗筆試題帶答案
- 人教版(2024)七年級下冊英語全冊教案(8個(gè)單元整體教學(xué)設(shè)計(jì))
- 猥褻諒解協(xié)議書范本
- 食堂大型炊事管理制度
- 工業(yè)品銷售培訓(xùn)
- 高中數(shù)學(xué)數(shù)列知識點(diǎn)總結(jié)
- TCCES 44-2024 老舊房屋結(jié)構(gòu)安全監(jiān)測技術(shù)標(biāo)準(zhǔn)
- 2024年汽車維修工技能理論考試題庫含答案(滿分必刷)
- 2025年專業(yè)保安證考試試題及答案
- 核心素養(yǎng)下小學(xué)英語分層作業(yè)布置有效性探究
- 計(jì)量知識宣傳培訓(xùn)課件
評論
0/150
提交評論