自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#調(diào)用Windows服務(wù)項(xiàng)目基礎(chǔ)描述

開發(fā) 后端
這里介紹C#調(diào)用Windows服務(wù)項(xiàng)目,Windows服務(wù)是獨(dú)立于登錄用戶而工作的Windows應(yīng)用程序,它通常在計(jì)算機(jī)啟動(dòng)時(shí)開始執(zhí)行,且常常連續(xù)執(zhí)行,直到計(jì)算機(jī)關(guān)閉為止。

學(xué)習(xí)C#時(shí),經(jīng)常會(huì)遇到Windows服務(wù)問題,這里將介紹C#調(diào)用Windows服務(wù)項(xiàng)目來解決問題。

Windows服務(wù)是獨(dú)立于登錄用戶而工作的Windows應(yīng)用程序,它通常在計(jì)算機(jī)啟動(dòng)時(shí)開始執(zhí)行,且常常連續(xù)執(zhí)行,直到計(jì)算機(jī)關(guān)閉為止。像Exchange Server,IIS和殺毒軟件等都使用這種方式,這樣就可以獨(dú)立于某一用戶而且可以在任何用戶登錄前來運(yùn)行,同時(shí)也可以服務(wù)于所有的進(jìn)程,從而以一種服務(wù)的形式存在。

正因?yàn)閃indows服務(wù)有著這么多的特性,因此,當(dāng)需要一些特殊功能的時(shí)候就可以考慮C#調(diào)用Windows服務(wù)項(xiàng)目來解決問題。比如下面我們要做的這個(gè)例子。對(duì)于我們這些程序設(shè)計(jì)人員,計(jì)算機(jī)是在一起工作時(shí)間最長(zhǎng)的伙伴,每天都會(huì)對(duì)著它的屏幕八個(gè)小時(shí)以上,還不包括下班后在家打游戲的時(shí)間,因此,保護(hù)眼睛是最重要的了。問題的起因來源于本人周六去眼科對(duì)激光手術(shù)的復(fù)查,大夫一再向我強(qiáng)調(diào)眼睛的自我調(diào)節(jié)能力,就是說只要你能保證你每隔一個(gè)小時(shí)左右就閉眼休息或向遠(yuǎn)處眺望,離開電腦屏幕,那么已經(jīng)治好的近視就不會(huì)反彈。本人雖是自律性比較強(qiáng)的人,但在計(jì)算機(jī)屏幕面前就不再如此了,往往幾個(gè)小時(shí)也不抬頭一次,為了眼睛的健康,我決定把這個(gè)艱巨的任務(wù)交由計(jì)算機(jī)來完成,讓它在一小時(shí)左右自動(dòng)提醒我休息五分鐘。如此一來,豈不是再也不用顧慮這件事了。

功能雖然簡(jiǎn)單,但要寫個(gè)程序放在啟動(dòng)組里每天自動(dòng)運(yùn)行也不是一個(gè)好的辦法,正巧以前也沒做過Windows服務(wù),不如索性來試一試,同進(jìn)也看看.NET為我們提供了多么先進(jìn)的功能吧,于是決定,就用C#來做一個(gè)提醒我保護(hù)眼睛的Windows服務(wù),取名就叫CareEye吧。

運(yùn)行Visual Studio.NET 2003,建立一個(gè)C#調(diào)用Windows服務(wù)項(xiàng)目,在CareEye.cs的設(shè)計(jì)視圖提示可以把需要的控件和組件拖動(dòng)到這上面,假如想要做系統(tǒng)日志的話當(dāng)然就可以把EventLog組件拖過來了,不過這個(gè)程序好像不需要這些東西,還是算了吧。那么計(jì)時(shí)要不要采用計(jì)時(shí)器控件呢?想了一下,這個(gè)控件雖然好用,但太常用了,本著學(xué)習(xí)新知識(shí)的原則,最恰當(dāng)?shù)目峙戮褪蔷€程了,而且在以后做其他Windows服務(wù)的時(shí)候線程肯定是必需的,所以還是用線程好,這樣我只要在線程中完成對(duì)時(shí)間的監(jiān)測(cè),把線程的啟動(dòng)和停止交給服務(wù)的啟動(dòng)和停止,呵,很方便啊。

再來看CareEye.cs的源程序,一大堆沒見過的東西,不過仔細(xì)分析一下也就沒什么了。CareEye類派生于ServiceBase類,因此繼承了基本服務(wù)類的特性,顯然Main()方法會(huì)由SCM(服務(wù)控制管理程序)調(diào)用,在這個(gè)方法中Run一個(gè)新的CareEye實(shí)例,這樣就運(yùn)行了一個(gè)Windows服務(wù),OnStart()和OnStop()明顯是用于啟動(dòng)和停止服務(wù)的響應(yīng)函數(shù)了。

注意在Main()方法中有一個(gè)ServiceBase[]的數(shù)組,它是為那些一個(gè)服務(wù)進(jìn)程包含多個(gè)服務(wù)準(zhǔn)備的,對(duì)于這個(gè)程序來說,它只有一個(gè) CareEye服務(wù),因此完全可以把這個(gè)數(shù)組刪除,而只是使用System.ServiceProcess.ServiceBase.Run(new CareEye());一句就夠了。

接下來為了使用線程,需要引入System.Threading命名空間,為了使用對(duì)話框,還需要引入System.Windows.Forms命名空間,這是為了將來提示用戶時(shí)顯示對(duì)話框而準(zhǔn)備的。

下面為類CareEye添加一個(gè)成員字段private Thread MainThread;同時(shí)在構(gòu)造函數(shù)中對(duì)其進(jìn)行初始化:

  1. MainThread=new Thread(new ThreadStart(ThreadFunc));  
  2. MainThread.Priority=ThreadPriority.Lowest; 
  3. %3
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-07 16:43:44

C#調(diào)用Windows

2009-08-06 15:52:11

C#調(diào)用外部進(jìn)程

2009-09-03 17:59:18

C#調(diào)用事件

2009-08-24 13:40:58

C# Windows

2009-07-31 16:12:10

Windows APIC#

2009-08-03 13:34:57

C#調(diào)用Windows

2009-08-13 17:04:09

C#語言C#程序

2009-08-17 13:18:01

C#調(diào)用Windows

2009-08-25 15:38:12

C# Windows服

2009-08-20 09:30:03

C#開發(fā)WinForm

2009-08-03 16:45:02

C#異步Socket

2009-08-03 18:08:39

C# ICloneab

2009-08-17 16:32:34

C# Anonymou

2009-08-18 17:41:22

C# ListView

2009-08-26 17:49:36

C# readonly

2009-08-31 13:18:09

C# IWebMess

2009-08-31 18:32:01

C# ListBoxE

2009-08-19 10:09:21

C#和C++

2009-08-25 16:16:27

C#調(diào)用Windows

2009-08-27 17:31:44

C#創(chuàng)建Windows
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)