C#建立Windows服務

來源:互聯網
上載者:User
利用VS.NET建立C# Windows服務在很多應用中需要做windows服務來操作資料庫等操作,比如
(1)一些非常慢的資料庫操作,不想一次性去做,想慢慢的通過服務定時去做,比如定時為Database Backup等
(2)在.net Remoting中利用windows服務來做Host
利用vs.net我們可以在幾分鐘之內建立其windows服務,非常簡單
下面說一下步驟
1. 建立一個項目
2. 從一個可用的項目模板列表當中選擇Windows服務
3. 設計器會以設計模式開啟
4. 從工具箱的組件表當中拖動一個Timer對象到這個設計表面上 (注意: 要確保是從組件列表而不是從Windows表單列表當中使用Timer)  
5. 設定Timer屬性,Interval屬性200毫秒(1秒進行5次資料庫操作)
6. 然後為這個服務填加功能
7.雙擊這個Timer,然後在裡面寫一些資料庫操作的代碼,比如
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. 將這個服務程式切換到設計檢視
9. 右擊設計檢視選擇“添加安裝程式”

from:http://post.blog.hexun.com/imagine18/trackback.aspx?articleid=6056177
10. 切換到剛被添加的ProjectInstaller的設計檢視
11. 設定serviceInstaller1組件的屬性:  
      1) ServiceName = My Sample Service
      2) StartType = Automatic (開機自動運行)
12. 設定serviceProcessInstaller1組件的屬性    Account = LocalSystem
13. 改變路徑到你項目所在的bin\Debug檔案夾位置(如果你以Release模式編譯則在bin\Release檔案夾)
14. 執行命令“InstallUtil MyWindowsService.exe”註冊這個服務,使它建立一個合適的註冊項。(InstallUtil這個程式在WINDOWS檔案夾\Microsoft.NET\Framework\v1.1.4322下面)
15. 右擊案頭上“我的電腦”,選擇“管理”就可以打電腦管理主控台
16. 在“服務和應用程式”裡面的“服務”部分裡,你可以發現你的Windows服務已經包含在服務列表當中了
17. 右擊你的服務選擇啟動就可以啟動你的服務了

看看資料庫是不是一秒多了5個記錄啊

C# Windows服務安裝、卸載批處理代碼

echo 請按任意鍵開始安裝客戶管理平台的後台服務. . .
echo.
pause
echo.
echo 清理原有服務項. . .
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil /U D:\Service\WindowsService1.exe > InstallService.log
echo.
echo 清理完畢,開始安裝後台服務. . .
echo.
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil D:\Service\WindowsService1.exe >> InstallService.log
echo 服務安裝完畢,啟動服務. . .
net start CRMService >> InstallService.log
echo.
echo 操作結束,請在 InstallService.log 中查看具體的操作結果。
echo.
pause

 

C# Windows服務項目裡的檔案訪問

如果在Windows服務裡訪問了設定檔或者其它檔案,要在解決方案的對應的檔案的屬性裡,將此資源配置為複製或者如果較新則複製,這樣,在產生的目錄下面才會把檔案複製過去.

在Windows服務裡面,如果訪問檔案,採用絕對路徑可以.如果採用相對路徑,和產生的服務檔案在同一目錄下面.則要訪問此程式集下面的檔案.

using System;
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節點的所有子節點   
           foreach (XmlNode xn in nodeList)   //遍曆所有子節點   
           ...{
               XmlElement xe = (XmlElement)xn;   //將子節點類型轉換為XmlElement類型   
               if (xe.GetAttribute("key").IndexOf(key) != -1)
               ...{
                   return xe.GetAttribute("value");
                   break;
               }
           }
           return "";
       }
       #endregion
    }
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.