2016-03-19 10 views
2

をstatringた直後に停止している、私は手動でそれを開始し、インストールした後Windowsサービスは、私は、Windowsサービスを書いた

static void Main() 
    { 
     ServiceBase[] ServicesToRun; 
     ServicesToRun = new ServiceBase[] 
     { 
      new AutoUpgradeServiceDemo() 
     }; 
     ServiceBase.Run(ServicesToRun); 

    } 

//Service class 
    public AutoUpgradeServiceDemo() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     MessageBox.Show("Service Has been Started"); 
     //My logic goes here 
    } 

    protected override void OnStop() 
    { 
     //My logic goes here 
     MessageBox.Show("Service Has been Stopped"); 
    } 

以下のコードを見つけることができます。次のエラーを表示してすぐに終了します。誰も私を助けてもらえ

enter image description here

...

+0

はそれが例外をスローして、新しいスレッドを開始する必要がある場合?いくつかの例外処理を適所に置くべきです。また、Windowsのイベントログを確認してください。そこにいくつかの有益な情報があるかもしれません。 –

+0

はいroryap私は例外処理を実装し、すべてのコードは例外フリーです..現在、私はWindowsサーバー2008 r2で作業しています...どのようにイベントのレジストリをチェックする..? –

答えて

2

Windowsサービスは、ユーザーインターフェイスを持っていません。したがって、サービスからメッセージボックスを表示することはできません。エラーを報告する場合は、標準的な方法でイベントログを使用します。

protected override void OnStart(string[] args) 
{ 
    base.OnStart(args); 
    //my stuff 
    this.WriteEventLogEntry("My service started successfully", System.Diagnostics.EventLogEntryType.Information); 
} 
0

Windowsサービスは、限定時間内にOnStart()を実行する必要があります。 何秒ですか?私は覚えていない、MSDNを見てください。 このシナリオでサービスが終了すると、あまりにも多くの情報が報告されず、おそらくあなたもウォッチドッグによって殺されますか?

長いスタートアップは、私は通常、私は唯一のイベントログでログインし、TSungurに同意

protected override void OnStart(string[] args) 
     { 

      MyXxxxxStarter.LogInfo("Try to start thread"); 

      worker = new Thread(WorkerThread); 
      worker.Start(); 

      MyXxxxxStarter.LogInfo("Thread started "); 

     } 

は、(一つの場所で実装私のコードで)