2012-01-23 8 views
1

私は数時間実行した後、ほとんど毎日ログを記録せずにクラッシュするc#windowsサービスを持っています。最近、文字通りすべてのメソッドにキャッチブロックを追加しましたが、それでも助けにはなりません。私はMSMQで非同期コールバックを使用しているので、いくつかのマルチスレッドの問題があるかもしれないと思いますが、私は明確な手掛かりがありません。この問題の洞察は非常に役立ちます。C#Windowsサービスがキャッチブロックを打つことなくクラッシュする

public MyService : ServiceBase 
{ 
    onStart() 
    { 
    try 
    { 
     someQueue.BeginReceive() 
    } 
    catch(Exception e) 
    { 
     log error and throw 
    } 
    } 

    void someQueue_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e) 
    { 
    try 
    { 
    //process the message 
    } 
    catch(Exception e) 
    { 
     //log 
    } 
    finally 
    { 
     someQueue.Refresh() 
     someQueue.BeginReceive(); 
    } 
    } 
} 
+0

を見つけることができます?私はそのセクションの周りにいくつかの防御コードを追加します。 – CoreTech

+0

このマシンのイベントログにエラーまたは警告が表示されますか。 –

答えて

0

サービスが停止した理由を確認するには、イベントビューアを確認します。

開くメニューを起動し、イベントビューアを起動し、例外がキャッチされた場合、コールはsomeQueue_ReceiveCompleted()メソッドのfinallyブロックで「someQueue.BeginReceiveは()」、スローする場合、アプリケーションのセクションでは、エラー

関連する問題