簡単なC#WINDOWSサービスプログラム

10884 ワード

今日プログラムをして、1つの通信プラットフォームを书いて、机能は1つのTCPの通信プラットフォームで、アプリケーションゲートウェイと通信して、一方でSQLSERVERの拡张のストレージの过程で、それはSQLライブラリの中から相応のフィールドを提出して、UDPを通じて通信プラットフォームにパケットをなくして、プラットフォームはパケットを受け取ってからアプリケーションゲートウェイにつながって、パケットを送ってそしてアプリケーションゲートウェイの領収書を受け取ります.実装にはwindowsサービスプログラムを書く準備ができており、機械が再起動してもログインしなくても実行でき、業務の正常な運行に影響を与えない.
C#WINDOWSサービスをする前に、C#WINDOWSサービスプログラムのC#での書き方を熟知しておきましょう.
    1.VS.NET 2003でWINDOWSサービスプログラムを新規作成したプロジェクトWinSrv_A.
    2.SERVICE 1を変更します.CSプロパティSERVICENAMEは、サービスマネージャ->名にサービス名が表示されます.
    3.F 7を押してコードウィンドウに入り、中には2つのリロード関数があります.

  
  
  
  
  1. //protected override void OnStart(string[] args)  
  2. //{...} //  
  3. //protected override void OnStop()  
  4. //{...}//  

ここでは、サービスの開始と終了の時間を記録する機能を簡単にします.ログドキュメントのように書きます.              

  
  
  
  
  1. protected override void OnStart(string[] args)  
  2.             {  
  3.                    // TODO:  。  
  4.                   String s = System.DateTime.Now.ToString();  
  5.                   if(!File.Exists("c://srvlog.txt"))  
  6.                   {  
  7.                         StreamWriter sr = File.CreateText("c://bbbirdlog.txt");  
  8.                         sr.WriteLine("-------------------------START SRV---------------------");  
  9.                         sr.WriteLine (" {0} ",s);  
  10.                        sr.WriteLine ("  {0} or   {1}, .",1, 4.2);  
  11.                        sr.Close();  
  12.                   }  
  13.                   else 
  14.                   {  
  15.                        StreamWriter sr = File.AppendText("c://bbbirdlog.txt");  
  16.                       sr.WriteLine("-------------------------START SRV---------------------");  
  17.                       sr.WriteLine (" {0} ",s);  
  18.                        sr.WriteLine ("  {0} or   {1}, .",1, 4.2);  
  19.                        sr.Close();  
  20.                   }  
  21.              }  
  22.  
  23.                ///   
  24.               ///  。  
  25.               ///   
  26.                protected override void OnStop()  
  27.                {  
  28.                        // TODO:  。  
  29.                         String s1 = System.DateTime.Now.ToString();  
  30.                         if(!File.Exists("c://srvlog.txt"))  
  31.                         {  
  32.                          StreamWriter sr = File.CreateText("c://bbbirdlog.txt");  
  33.                          sr.WriteLine("-------------------------STOP SRV---------------------");  
  34.                          sr.WriteLine (" {0} ",s1);  
  35.                          sr.Close();  
  36.                         }  
  37.                         else 
  38.                         {  
  39.                          StreamWriter sr = File.AppendText("c://bbbirdlog.txt");  
  40.                          sr.WriteLine("-------------------------STOP SRV---------------------");  
  41.                          sr.WriteLine (" {0} ",s1);  
  42.                          sr.Close();  
  43.                          }  
  44.                    } 

    4.設計ウィンドウに戻って右クリックし、「インストーラの追加」を選択してserviceInstaller 1とserviceProcessInstaller 1の2つのコンポーネントを生成します.
ServiceInstaller 1のプロパティServiceNameをサービス名に書き換え、起動モードをAUTOMATICに設定します.
ServiceProcessInstaller 1の属性accountをLocalSystemに書き換える
    5.リンク生成サービスプログラムをコンパイルします.
    6.使用するNetframeworkツールINSTALLUTILサービスプログラムをインストールすればよい.
これで、C#で簡単なC#WINDOWSサービスプログラムを書きました.
 
Windowsサービス
文章の分類:.Netプログラミング
1>Windowsサービスプロジェクトの新規作成
2>サービス1を選択し、ビューインタフェースで右クリック-->[インストーラの追加]
 
3>
ProjectInstallerが表示されます.csファイル、ProjectInstallerビューインタフェースには、2つのコントロールITPUBパーソナルスペース+ROb(@O[)G serviceInstaller 1:DescirptionとServiceNameの2つのプロパティを変更できます.それぞれ、サービスの説明とサービス名ITPUBパーソナルスペースi 4 E)}qu#iz/I(Rl serviceProcessInstaller 1:Accountプロパティを変更する必要があります.このサービスを実行するアカウントのタイプを表します.一般的にはLocalSystemに変更する必要があります.
 
今まで私たちの前期の仕事はすべて完成して、それからあなたはサービス1.csにはあなたのサービスコードが書かれています.それぞれ
OnStart(string[]arg)とOnStop()メソッドは、ここで実行するプログラムを書くことができます.
 
そして私たちは実行します.Netの配布ツールinstallutil.exeはwindowsサービスに追加します(このツールのデフォルトはC:/WINDOWS/Microsoft.NET/framework/v 2.0.50727ディレクトリ)
次のコードをtxtファイルに保存し、batファイルとして保存し、exeファイルと一緒に置くと、ダブルクリックして直接サービスをインストールできます.
インストール:
C#コード
  • @echo off   
  • echo wjboy 49サービスインストール
  • cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727   
  • C:   
  • installutil D:/Debug/WindowsServiceZol.Exce--注D:/Debug/はあなたのwindowsサービスのパス
  • です.
  • echo成功
  • echo. & pause  
  • @echo off
    echo wjboy49    
    cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727
    C:
    installutil D:/Debug/WindowsServiceZol.exe         -- D:/Debug/  windows     
    echo   
    echo. & pause
     
     
     
    アンインストール:
    installutil D:/Debug/WindowsServiceZolに変更するだけです.exe/uでいいですよ.
     
     
     
     
    インストール後に自動的に起動し、ProjectInstallerに次の文を追加します.
    C#コード
  • private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)   
  • {   
  •         
  •     Process p = new Process();   
  •     p.StartInfo.FileName = "cmd.exe";   
  •     p.StartInfo.UseShellExecute = false;   
  •     p.StartInfo.RedirectStandardInput = true;   
  •     p.StartInfo.RedirectStandardOutput = true;   
  •     p.StartInfo.RedirectStandardError = true;   
  •     p.StartInfo.CreateNoWindow = true;   
  •     p.Start();   
  •     string Cmdstring = "sc start wjboy49";//CMDコマンド
  •     p.StandardInput.WriteLine(Cmdstring);   
  •     p.StandardInput.WriteLine("exit");   
  •   
  • }