2010-12-01 14 views
1

私は.netアプリケーションを実行しており、そのアプリケーションが頻繁にクラッシュする場合。私は、クラッシュ後に、アプリケーションを再起動するためのメッセージをユーザーに表示するようなクラッシュリカバリープロセスを提供したいと考えています。これをアプリケーション内で実行し、クラッシュした後でも実行するコードを書くことはどうでしょう。 はコードの奇妙なループのように聞こえるが、これについてのあなたの経験を知りたい。アプリケーションクラッシュを検出する方法は?

+2

また、クラッシュの詳細を提出して、これらのバグを修正できるようにすることをお勧めします。 :) –

答えて

3

AppDomain.CurrentDomain.UnhandledExceptionイベントに登録して、イベントハンドラから処理することができます。

+0

しかし、アプリケーションがクラッシュした場合、このイベントはまだ起動されますか?私はアプリケーション内のコードがまだクラッシュ後に実行されるロジックを見つけることができません –

+1

クラッシュ後に解雇されます。そしてeveはバグレポートを電子メールまたはレポートサービスに送ることができます。 –

+1

@Ali Tarhini:msdnは[.NET Frameworkバージョン4以降、このイベントはプロセスの状態を破損する例外に対して発生しません](http://msdn.microsoft.com/en-us/library/) system.appdomain.unhandledexception.aspx)。とにかくAppDomainがアンロードされます。このイベントの目的は、回復ロジックを実行することです。 –

-1

クラッシュとはどういう意味ですか?例外が発生した場合は、tryとcatchを使用してこれらのエラーを処理できます。
例外がない場合は、プログラムがクラッシュしないようにコードを変更してください。
EDIT:可能な場合は最後に可能です。複数のスレッドで同じ変数を使用します。

1

メインメソッドでコードを記述します。 (Windowsアプリケーションまたはコンソールアプリケーションであると仮定すると、それは1つあります)。

基本的にはあなたの主な方法は、このような何かを探して終わる:

RunApplicationあなたはもともと Mainに入れていたものですと RunCrashRecoveryがクラッシュ情報を送信し、その場合、ユーザーに尋ねるコードである
public static Main(string[] args) 
{ 
    try 
    { 
     RunApplication(args); 
    } 
    catch(Exception ex) 
    { 
     RunCrashRecovery(args, ex); 
    } 
} 

再起動したい。

関連する問題