スレッドプールがあり、特定の条件が満たされて例外をスローするライブラリを使用しています。私の質問は、これがIDEを使い果たした場合、スレッドが停止するか、全体全体のプログラムが停止するかどうかです。例外スレッドプールでスローされる
答えて
アプリケーションが.Net 2+の場合、非メインスレッドで処理されない例外がプロセスを平坦化します。
app.config LegacyUnhandledExceptionPolicy
設定を使用してこの動作を設定できますが、深刻なバグを隠す可能性があるため、この設定はお勧めしません。
更新
あなたは時折タイムアウト例外を無視したい場合は、トライ\ catchブロックであなたのWebサービスの呼び出しを配置することを検討し、タイムアウト例外無視:デバッガが壊れるとき
try
{
//Call WebService
}
catch(System.Net.WebException ex)
{
//Ignore
}
をすべてのスレッドが停止します。
Debug -> Windows -> Threads
画面には、スレッドが表示されます。スレッドを「フリーズ」することができます。つまり、プログラムの実行を続けると停止したままになります。
したがって、デバッガが実行されていても、一部のスレッドを停止させることができます。デバッガがブレークモードになっているときにスレッドを実行することはできません。
だから、現実世界に出たときにどうなるでしょうか? –
@Joe Tyman:ああ、「IDEの外」とは「IDEの外」を意味します:)現実世界ではプログラムがクラッシュし、Windowsはダイアログをユーザに提示します。これを防ぐには、3つの方法があります。1)すべてのスレッドで 'try ... catch'ブロックを実行します。 2)LegacyUnhandledExceptionPolicy設定。 3)Windowsサービスとして実行する場合、スレッド内の例外はプログラムを強制終了しません – Andomar
だから、あなたが持っているもの確認できます:
- あなたは
TheadPool
スレッド上で実行する方法があります。 - このメソッドは例外をスローします。
- 例外は
try-catch
ブロックで処理されません。 - アプリケーションがIDEの外で実行されています。
これで、次のコードで簡単にテストできます。あなたの質問の文脈の中で興味深いので、下の観察、特に大胆な観察に注意深く注意してください。
public static void Main()
{
ThreadPool.QueueUserWorkItem(
(state) =>
{
throw new InvalidOperationException();
}, null);
while (true)
{
Thread.Sleep(1000);
Console.WriteLine(DateTime.Now.ToString());
}
}
IDEの外部で実行している場合は、次のことに注意してください。
- 「[アプリケーション]に問題が発生したため終了する必要があります。ご迷惑をおかけして申し訳ありません。
- アプリケーションは実行し続け、毎秒現在の時刻を印刷します。
- の後にアプリケーションが終了します。ダイアログボックスを閉じます。
IDE内部で実行している場合あなたは次のことに気づくでしょう。
- IDEは例外をインターセプトし、独自の未処理の例外ウィンドウを使用して表示します。
- すべてのスレッドが停止するため、現在の時刻が表示されません。
- 例外を無視してデバッグセッションを再開すると、現在の時刻が表示されます。
- IDEは再び例外を再発行し、それを傍受します。
- すべてのスレッドが停止し、サイクルが無限に繰り返されます。
は、私はちょうどスレッドを殺すためにどのようにVisual Studioの2010
- 1. JPAクエリで例外がスローされる
- 2. Xamarin.Formsカスタムコントロールでスローされるシーケンス例外
- 3. JavaFXでNullPointer例外がスローされる
- 4. AuthenticationProviderでスローされたキャッチ例外
- 5. HttpRequest.GetResponseで例外がスローされない
- 6. C:0x0FFB0BA0(ucrtbased.dll)でスローされた例外
- 7. SapUI5- ComboBoxアイテムがテンプレートでバインドされ、例外がスローされる
- 8. 例外がスローされたエラー
- 9. asp.netシリアライゼーション例外がスローされ
- 10. 例外がスローされない
- 11. Java例外がスローされない
- 12. 例外 'System.OutOfMemoryException'がスローされました
- 13. バインド例外がスローされない
- 14. Assembly.Load - スローされた例外:mscorlib.dllの 'System.BadImageFormatException'
- 15. 例外がスローされましたManatee.Trello.RestSharp.RestSharpResponse
- 16. Servlet.init()例外がスローされます。
- 17. 例外:System.OutOfMemoryExceptionがスローされました
- 18. 例外が処理されなかった - 再スロー例外
- 19. 例外を処理するPythonスレッドプール
- 20. 例外がスローされ、さらにコードが実行される
- 21. 除外された例外ハンドラのコードで例外が発生するとNullReferenceExceptionがスローされる
- 22. 例外から例外をスローする
- 23. =例外をスローする例外
- 24. parseObject.saveInBackground()スロー例外
- 25. スロー例外
- 26. eglGetDisplay()スロー例外
- 27. C++ catch(...)ブロックでスローされた例外にアクセスできる
- 28. グアバでコンパイルするとgwt 2.8例外がスローされる20
- 29. Servlet.service()のサーブレット[...]がパス[/ ...]のコンテキストでスロー例外[サーブレットの実行で例外がスローされました]
- 30. EclipseのJunitテストで例外がスローされる
でこれをテストしましたか? –
@Joeスレッドを殺す理由を説明してください。どのような問題を解決しようとしていますか? –
+1 LegacyUnhandledExceptionPolicyは、OPが望むものとまったく同じように見えます。 – Andomar