2009-04-13 13 views
3

私は3のWindowsサービスの質問Windowsサービス質問

  1. はWSがバックグラウンドで動作することができますですがありますか? 2分ごとに仕事をすることは可能ですか? (そうならば、私はいくつかの助けを得ることができますか?)私は簡単な方法でWSをインストールするにはどうすればよい

  2. ? (ないInstallutil.exeと.......)

  3. どのように私は、Windowsサービスから.exeファイルを実行することができますか?

私はこの方法で試してみた:

System.Diagnostics.Process G = new Process(); 
    G.StartInfo.FileName = @"d:\demo.exe"; 
    G.Start(); 

をそれはうまくいきませんでした。

答えて

2
  1. はいWindowsサービスはバックグラウンドで動作し、動作します。同じ仕事を2分ごとに実行するには、system.Timerクラスを使用し、コードをonElapsedイベントに入れます。私は最近、このタイプのサービスを作成し、使用できるタイマーは2種類あり、正しいものを使用しているか、onElapsedイベントが見つからないことを確認しています。

  2. 私はInstallUtil.exeなしでインストールしようとしませんでしたが、メインアプリケーションのインストールの一部として実行される.batファイルがあります。

私が使用しているWindowsサービスから.exeファイルを実行するために、Windowsサービスから.exeファイルを実行しているのあなたのフォローアップの質問:

Process p = new Process(); 
p.StartInfo.WorkingDirectory = @"C:\"; 
p.StartInfo.FileName = @"C:\demo.exe"; 
p.StartInfo.CreateNoWindow = true; 
p.Start(); 
p.WaitForExit(); 

は、実行ファイルがで動作しますことを覚えておいてくださいサービスと同じレベルです。つまり、デスクトップには何も表示できません。開いているウィンドウが見えることが予想される場合、または.exeにユーザー入力が必要な場合、失望し、.exeが無期限に待機することがあります。 (私は、このリンクLaunch external programsが役立ったと、この質問はSOでもあります - Launching an Application (.EXE) from C#)あなたはまた、サービスとしてあなたのアプリをインストールするのsc.exeを使用することができます

6
  • はい、Timerクラス(example

  • を使用 installutil.exe の問題点は何ですか?あなたがそれを好きでない場合は、VS.NETでインストーラを生成しますが、installutil.exeこれは私が知る限り、常にバックグラウンドにあります。 (Complete example 1Complete example 2

4

Windowsサービスは、デフォルトでは、バックグラウンドで動作するはずです。彼らは開始直後にサービスマネージャーに制御を戻すことが期待されるので、通常はサービスタスクを処理するスレッドを起動します。

言われていること、System.Threading.Timerクラスは、一定の間隔で実行されますタイマーを起動するためにうまく動作するはずです。

インストールに関しては、Installutil.exeを使用する必要があります。これは、Windowsサービスをインストールするための標準的な方法です。

私はそれはあなたが使用することができます良い、きれいなテンプレートを持っているthis codeproject article.でご覧になることをお勧めします。さらに、Installutilの使用を簡略化するためのバッチファイルの例があります。これは、あなたにとって「より良い」ものになるかもしれません。

2

VS2008で開発している場合、Windowsサービスを作成するためのテンプレートが用意されています。

基本的には、Timer(System.Windows.Timers.Timer)を作成し、OnStartメソッドで初期化を行い、OnStopメソッドでのクリーンアップとファイナライズを行い、Timerを初期化します(OnStartでは、またはオンデマンド)あなたがここにbasic exampleかのためにこれを見ることができ

は、インストールのためにtimers

と、たとえば、別の回答のオプション以外にも、あなたも、もう一度、インストーラプロジェクトを作成するテンプレートを確認することができますプロジェクト

1

が、それは、インストールのために本当にあまりにも多くの異なるInstallUtil.exe以上ではありません。これは、コマンドラインからサービスをより詳細に制御します。

Here is an older article describing sc.exe's use.また、コマンドプロンプトからscを実行すると、コマンドが表示されます。

0

サービスの作成が難しい場合は、2分ごとに実行するようにタスクをスケジュールすることもできます。

関連する問題