C#创建Windows服务
(1)一些非常慢的數(shù)據(jù)庫操作,不想一次性去做,想慢慢的通過服務(wù)定時去做,比如定時為數(shù)據(jù)庫備份等
(2)在.net Remoting中利用windows服務(wù)來做Host
利用vs.net我們可以在幾分鐘之內(nèi)建立其windows服務(wù),非常簡單
下面說一下步驟
1. 新建一個項(xiàng)目
2. 從一個可用的項(xiàng)目模板列表當(dāng)中選擇Windows服務(wù)
3. 設(shè)計器會以設(shè)計模式打開
4. 從工具箱的組件表當(dāng)中拖動一個Timer對象到這個設(shè)計表面上 (注意: 要確保是從組件列表而不是從Windows窗體列表當(dāng)中使用Timer)??
5. 設(shè)置Timer屬性,Interval屬性200毫秒(1秒進(jìn)行5次數(shù)據(jù)庫操作)
6. 然后為這個服務(wù)填加功能
7.雙擊這個Timer,然后在里面寫一些數(shù)據(jù)庫操作的代碼,比如
SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
???? SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
???? conn.Open();
???? comm.ExecuteNonQuery();
???? conn.Close();
8. 將這個服務(wù)程序切換到設(shè)計視圖
9. 右擊設(shè)計視圖選擇“添加安裝程序”
from:http://post.blog.hexun.com/imagine18/trackback.aspx?articleid=6056177
10. 切換到剛被添加的ProjectInstaller的設(shè)計視圖
11. 設(shè)置serviceInstaller1組件的屬性:??
????? 1) ServiceName = My Sample Service
????? 2) StartType = Automatic (開機(jī)自動運(yùn)行)
12. 設(shè)置serviceProcessInstaller1組件的屬性??? Account = LocalSystem
13. 改變路徑到你項(xiàng)目所在的bin\Debug文件夾位置(如果你以Release模式編譯則在bin\Release文件夾)
14. 執(zhí)行命令“InstallUtil MyWindowsService.exe”注冊這個服務(wù),使它建立一個合適的注冊項(xiàng)。(InstallUtil這個程序在WINDOWS文件夾\Microsoft.NET\Framework\v1.1.4322下面)
15. 右擊桌面上“我的電腦”,選擇“管理”就可以打計算機(jī)管理控制臺
16. 在“服務(wù)和應(yīng)用程序”里面的“服務(wù)”部分里,你可以發(fā)現(xiàn)你的Windows服務(wù)已經(jīng)包含在服務(wù)列表當(dāng)中了
17. 右擊你的服務(wù)選擇啟動就可以啟動你的服務(wù)了
看看數(shù)據(jù)庫是不是一秒多了5個記錄啊
echo 請按任意鍵開始安裝客戶管理平臺的后臺服務(wù). . .
echo.
pause
echo.
echo 清理原有服務(wù)項(xiàng). . .
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil /U D:\Service\WindowsService1.exe > InstallService.log
echo.
echo 清理完畢,開始安裝后臺服務(wù). . .
echo.
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil D:\Service\WindowsService1.exe >> InstallService.log
echo 服務(wù)安裝完畢,啟動服務(wù). . .
net start CRMService >> InstallService.log
echo.
echo 操作結(jié)束,請在 InstallService.log 中查看具體的操作結(jié)果。
echo.
pause
?
C# Windows服務(wù)項(xiàng)目里的文件訪問
如果在Windows服務(wù)里訪問了配置文件或者其它文件,要在解決方案的對應(yīng)的文件的屬性里,將此資源配置為復(fù)制或者如果較新則復(fù)制,這樣,在生成的目錄下面才會把文件復(fù)制過去.
在Windows服務(wù)里面,如果訪問文件,采用絕對路徑可以.如果采用相對路徑,和生成的服務(wù)文件在同一目錄下面.則要訪問此程序集下面的文件.
using?System.Collections.Generic;
using?System.Text;
using?System.Reflection;
using?System.Xml;
using?System.IO;
namespace?HDUSearch
...{
???public??class?IndexConfig
????...{
???????GetValue#region?GetValue
???????public?string?GetValue(string?key)
???????...{
???????????string?assemblyFilePath?=?Assembly.GetExecutingAssembly().Location;
???????????string?assemblyDirPath?=?Path.GetDirectoryName(assemblyFilePath);
???????????XmlDocument?xmlDoc?=?new?XmlDocument();
???????????xmlDoc.Load(assemblyDirPath?+?"\Index.config");
???????????XmlNodeList?nodeList?=?xmlDoc.SelectSingleNode("/configuration/appSettings").ChildNodes;???//獲取appSettings節(jié)點(diǎn)的所有子節(jié)點(diǎn)???
???????????foreach?(XmlNode?xn?in?nodeList)???//遍歷所有子節(jié)點(diǎn)???
???????????...{
???????????????XmlElement?xe?=?(XmlElement)xn;???//將子節(jié)點(diǎn)類型轉(zhuǎn)換為XmlElement類型???
???????????????if?(xe.GetAttribute("key").IndexOf(key)?!=?-1)
???????????????...{
???????????????????return?xe.GetAttribute("value");
???????????????????break;
???????????????}
???????????}
???????????return?"";
???????}
???????#endregion
????}
}
轉(zhuǎn)載于:https://www.cnblogs.com/lonely7345/archive/2008/06/27/1231351.html
總結(jié)
以上是生活随笔為你收集整理的C#创建Windows服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山东名酒白酒排行榜是怎样的?
- 下一篇: 封装了一下我佛山人4.0 (支持vs20