用C開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用_第1頁
用C開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用_第2頁
用C開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用_第3頁
用C開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用_第4頁
用C開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、用C#開發(fā)Windows服務(wù)監(jiān)控系統(tǒng)使用摘要 本文將向你展示如何用C#開發(fā)一個Windows服務(wù)來記錄系統(tǒng)使用情況。每一個人都想知道他們每天在什么時間啟動和關(guān)閉自己的系統(tǒng),以及系統(tǒng)每天運行了多少時間。如果用一個DataGrid控件來顯示系統(tǒng)啟動、關(guān)閉及所消耗的時間將是一個不錯的主意。在本文中,我提供了一種方法來實現(xiàn)這一目標(biāo)-使用C#開發(fā)一個Windows服務(wù)。其實,每個人都了解一點Windows服務(wù)。但是,為了介紹之目的,我僅盡可能少得解釋一下Windows服務(wù)。然后,我們來討論如何設(shè)計一個這樣的應(yīng)用程序。一、 什么是Windows服務(wù)?其實,Windows服務(wù)只是運行于后臺的并不要求我們了解

2、的一種進(jìn)程而已。而且,它們的絕大部分并不要求用戶交互。如果我們在"開始"菜單的"運行"命令行下輸入"services.msc"并回車,那么我們就可以看到在我們當(dāng)前的系統(tǒng)中運行的服務(wù)情況。其中,有一些服務(wù)是當(dāng)系統(tǒng)啟動時自動啟動的。但是,也有一些服務(wù)必須在我們的手工啟動下才能運行。二、 Windows服務(wù)的優(yōu)點1. 能夠自動運行。2. 不要求用戶交互。3. 在后臺運行。一般情況下,Windows服務(wù)被用于耗費時間很多的進(jìn)程中,例如備份數(shù)據(jù)庫,等等?,F(xiàn)在,我們要設(shè)計一個Windows服務(wù)來實現(xiàn)記錄你的系統(tǒng)啟動和關(guān)閉需要的時間。我使用Visu

3、al Studio 2003設(shè)計了這個應(yīng)用程序。三、 設(shè)計Windows服務(wù)第一步:首先打開Visual Studio并且選擇Visual C#工程。選擇模板類型為Windows服務(wù),并命名為Monitoring,如下圖所示:選擇模板類型為Windows服務(wù)第二步:按F7鍵打開代碼窗口。然后,加入對System.IO命名空間的引用,以便把系統(tǒng)定時功能編寫到一個文件中。下一步,用Monitoring一詞替換所有出現(xiàn)的Service1一詞。之后,轉(zhuǎn)入設(shè)計模式(按鍵shift+F7)。選擇Solution Explorer(按鍵Ctrl+Alt+L)。點擊Service1.cs并且命名它為Monit

4、oring.cs。之后,轉(zhuǎn)入代碼窗口。在OnStart事件中加入下列代碼,如下圖所示:在OnStart事件中加入代碼在OnStart事件中實現(xiàn)的功能首先,在c盤上創(chuàng)建一個xml文件,并命名為file1。然后,在這個文件中建立如下代碼:?xml version="1.0" encoding="utf-8" standalone="no"?times然后,關(guān)閉它。我創(chuàng)建了一個服務(wù),它能夠在系統(tǒng)啟動時自動啟動并且記錄下啟動時間。當(dāng)系統(tǒng)關(guān)閉時,它也關(guān)閉。而且,它會記錄下關(guān)閉時間和系統(tǒng)中所花費的時間。首先,我要創(chuàng)建一個StreamWriter來

5、把系統(tǒng)啟動時間寫入file1.xml文件中。在把代碼復(fù)制到你的OnStart事件后,正好在Monitoring構(gòu)造器的上面創(chuàng)建一個公共變量temp,如下圖所示:創(chuàng)建一個公共變量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事件中實現(xiàn)的功能當(dāng)系統(tǒng)要關(guān)閉時,我使用一個StreamWriter再次打開file1.xml-它將記下系統(tǒng)關(guān)閉時間,還將記下在系統(tǒng)啟動和關(guān)閉之間所花費的時間跨度。我在OnStart和OnShutdown事件中使用了一個temp變

7、量。在OnStart中,它用于存儲啟動時間。然后,它被再次用于OnShutdown事件中來記下系統(tǒng)啟動和關(guān)閉之間所花費的時間間隔。然后,我們必須配置我們的Windows服務(wù)以便安裝和運行。因此,首先轉(zhuǎn)到設(shè)計視圖中,并選擇屬性窗口(可以按下F4)。把CanStop和CanShutdown設(shè)置為true。在安裝之前,我們必須要安裝一個安裝程序。右擊設(shè)計視圖窗口,然后選擇"Add Installer"。然后,它將顯示ProjectInstaller.cs。在這個文件中,serviceInstaller1和serviceProcessInstaller1都存在。轉(zhuǎn)到serviceP

8、rocessInstaller1屬性處:· 把Account設(shè)置為LocalSystem。· 然后,轉(zhuǎn)到serviceInstaller1屬性處。· 把DisplayName和ServiceName設(shè)置為Monitoring。· 設(shè)置啟動類型(StartType)為automatic。請參考下圖:參考設(shè)置參考設(shè)置然后,轉(zhuǎn)到VS.NET的命令提示符下。在控制臺下,轉(zhuǎn)到服務(wù)的Debug文件夾下:輸入"InstallUtil Monitoring.exe"如果它顯示"Commit Phase Completed Successfu

9、lly",則說明服務(wù)被成功安裝。然后,重啟系統(tǒng)以啟動服務(wù)。在重啟之后,打開file1.xml文件,它記錄了系統(tǒng)的開始時間。如果關(guān)閉系統(tǒng),它將記錄下系統(tǒng)的關(guān)閉時間和使用系統(tǒng)的時間長度。通過這一部分,我們已經(jīng)完成了記錄下系統(tǒng)所消耗的時間。接下來,我們將創(chuàng)建一個web應(yīng)用程序以便在一個Grid控件中顯示xml數(shù)據(jù)。在下一部分中,我將解釋如何抽取這個xml文件數(shù)據(jù)并且在一個DataGrid控件中顯示它。四、 用C#創(chuàng)建一個Web應(yīng)用程序在這一部分中,我們用C#創(chuàng)建一個web應(yīng)用程序,并命名為SystemMonitor。加入下面命名空間:using System.IO;using System

10、.Xml;using System.Text;之后,把DataGrid和Label控件拖動到頁面上,如下圖所示:把DataGrid和Label控件拖動到頁面上把下列代碼復(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)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論