2009-07-17 6 views
0

Windwowsサービスを作成すると、登録が必要な.exeファイルが作成され、「サービス」スナップインから起動します。.NetサービスとWindows Appは同時にですか?

コマンドラインまたはデバッガからサービスを開始できません。Windowsサービスは、まずinstallutil.exeを使用してインストールしてからServerExplorerを起動し、 Windowsサービスの管理ツールまたはNET STARTコマンドを使用します。

このメッセージを表示するのではなく、通常の.exeとして実行すると、コードで制御できるようになります。 (Sub Main()などのように、それはサービスとして開始するときとはまったく異なるエントリポイントになります)

ありがとう!
ダニエル

+0

"Sub Main()"への参照は、VBを使用していることを意味しますか?その場合は、質問vb.netにタグを付けることができます。 – CoderDennis

+0

私はVBを使用していますが、これはVB固有のものではないと思います。 –

答えて

4

まあそれは可能ですが、私はそれは美しいソリューションではわからないような何か:私はそれをテストしていない

static void Main() 
{ 
    bool your_condition = ReadRegistry or ReadConfigurationFile; 
    if(your_condition) 
    { 
     ServiceBase[] ServicesToRun; 
     ServicesToRun = new ServiceBase[] 
     { 
      new YourService() 
     } 
     ServiceBase.Run(ServicesToRun); 
    } 
    else 
    { 
     Application.Run(new YourForm()) 
    } 
} 

に私はそれが動作すると思います。

+0

優秀、ありがとう! –

1

アプリケーションを別のクラスライブラリとして記述し、それを起動するためのスタブエフェクトを作成できますか?

+0

はい、私はそれを考えました。少なくとも2つの別々のプロジェクトを意味します。私が知りたいのは、1つのプロジェクトだけでこれを解決できるかどうかです。 –

+0

別々のEXEが本当にここに行く方法です。 。 。 –

0

arg値を渡すことができます。

app.exeの-UIまたはapp.exeの - サービス

2

私たちは、フランシスB.に似た私たちを構築するが、条件付きコンパイルを使用する傾向がある:

#if DEBUG 
    Application.Run(new YourForm()) 
#else 
    ServiceBase[] ServicesToRun; 
    ServicesToRun = new ServiceBase[] 
    { 
     new YourService() 
    } 
    ServiceBase.Run(ServicesToRun); 
#endif 

を、それは開発中のテストとデバッグするのは簡単です、そのようにして、サービスとしてビルドの展開を行います。

実際にスタンドアロンのexeファイルとしてリリースするのか、開発とテストを支援するツールなのかは疑問です。

ところで、あなたのデバッグバージョンでは "application.run()"ブロックは必要ありません。フォームが表示されない場合は、サービスのOnStartハンドラを別のスレッドで生成する際に無限ループを行うコードだけで問題ありません。

関連する問題