問題タブ [application-shutdown]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 制御されたアプリケーションのシャットダウン戦略
私たちの(WindowsネイティブC ++)アプリは、スレッド化されたオブジェクトとマネージャーで構成されています。それはかなりよく書かれており、マネージャーオブジェクトがミニオンのライフサイクルを制御しているのを見るデザインです。さまざまなオブジェクトがイベントをディスパッチおよび受信します。一部のイベントはWindowsからのものであり、一部は自家製です。
一般に、スレッドの相互運用性を十分に認識している必要があるため、Win32のクリティカルセクションやセマフォなどを使用した手動の同期手法を使用します。ただし、イベントハンドラーの再入可能性などが原因で、シャットダウン中にスレッドのデッドロックが発生することがあります。
中央コントローラーからシャットダウンイベントに登録し、それに応じて実行動作を変更するすべてのオブジェクトのように、これを開発しやすくするために実装できる適切なアプリシャットダウン戦略があるかどうか疑問に思います。これはあまりにも素朴ですか、それとももろいですか?
Microsoftの並列パターンライブラリなどを使用するようにアプリ全体を書き直すことを規定していない戦略を希望します。;-)
ありがとう。
編集:
多くのスレッドとイベントが常に発生している複雑なアプリでオブジェクトのライフサイクルを制御する方法を求めていると思います。Giovanniの提案は明白なものですが(私たち自身の手作業で)、アクティブオブジェクトを正しい順序でクリーンにシャットダウンするには、さまざまな既製の戦略またはフレームワークが必要であると私は確信しています。たとえば、C ++アプリをIoCパラダイムに基づいて作成する場合は、独自のコンテナーを開発する代わりに、PocoCapsuleを使用できます。アプリでオブジェクトのライフサイクルを制御するのに似たものはありますか?
android - setOnClickListener - アプリケーションが予期せず停止しました
コードのボタンに setOnClickListener を使用するとすぐに、アプリケーションを起動すると、the application has stopped unexpectedly
これは私のメインページのコードです:
main.xml は次のようになります。
wpf - Application.Current.Shutdown(-1)がWPFアプリを閉じない
Windowsで認証されたユーザーがwpfアプリケーションの有効なユーザーであるかどうかを確認しています。
そうでない場合は、アプリケーションをシャットダウンする必要があります。ただし、Application.Current.Shutdown(-1)を実行した後でも、アプリケーションは正常に実行され続けます。
以下のリンクは、StartUpURIを削除する必要があることを示しています。しかし、app.xamlにはそのタグがありません。-> App.xaml.csからのWPFアプリケーションのシャットダウン
編集:- 私はAPP.XAML.CSにこのコードを持っています->
iphone - アプリケーションのシャットダウン後に変数を保存する方法は?
アプリケーションのシャットダウン後にいくつかの整数を保存し、アプリケーションを開いた後にそれらを復元したいのですが、これを行う最も簡単な方法は何ですか?
delphi - すでにアンロードされたモジュールを呼び出すコードを見つける方法は?
典型的なアクセス違反が発生しました:
これは、プログラムの残りの部分がすでにシャットダウンしているときに作成されるスレッドで発生します。
System.FinalizeUnits
例外発生時にメインスレッドが実行されています。
gdiplus.dll
ロードされたメモリ領域にアドレスが属していることがわかりました。
返されたハンドルLoadLibrary('gdiplus.dll')
を呼び出さずにdprファイルに呼び出しを追加すると、問題は解決します。これにより、ファイナライズセクションの実行中にがアンロードされなくなります。FreeLibrary
gdiplus.dll
プログラムのどの部分がアクセス違反につながるスレッドを作成しているのかを知るにはどうすればよいですか?
解放されたメモリスペースを呼び出すコードを識別する方法はありますか?
FastMMとmadExceptはほとんど役に立ちません。madExceptエラーレポートウィンドウが表示されますが、すぐに再び閉じられ、ログファイルは書き込まれません。
プログラムを分解することはできますが、それは簡単なアプリケーションではなく、ある種のデバッグ手法を使用してこれを解決したいと思います。
c# - クラスライブラリでアプリケーションシャットダウンイベントをサブスクライブする方法
一部のアプリケーションで使用されるクラスライブラリがあります。これには、ライブラリ内の別のプライベートクラスBの静的フィールドで外部使用するためのクラスAが含まれています。ユーザーアプリケーションは、ライブラリのクラスAのインスタンスを使用します。
アプリケーションがシャットダウンするので、クラスBでクリーンアップを実行したいと思います。ユーザーアプリケーションからのアクションなしで、クラスBでアプリケーションシャットダウンイベントをキャッチすることは可能ですか?
java - contextDestroyed() と addShutdownHook() の比較
現在、シャットダウンする前に Web アプリケーションでクリーンアップ タスクを実行するために実装ServletContextListener
および使用しています。ただし、同じ目的でcontextDestroyed()
どのように使用できるかについて読んでいます。Runtime.addShutdownHook(Thread)
アンデプロイメント前にクリーンアップを実行するこれら 2 つの方法に違いはありますか? 機能性、効率性、および保守性の観点から、Web アプリケーションに適しているのはどれですか?
java - Javaアプリケーションサーバーのインスタンスの突然のシャットダウンの考えられる原因
私は開発者であり、アプリサーバーの知識は、リソースのデプロイ、宣言、マッピングなどの基本にまで及びます。
私の最初のステップは、アプリとサーバーのログ(sysoutとsyserr)を調べて手がかりを見つけ、サーバーインスタンスがシャットダウンする前に最後に行ったことを確認することです。たとえば、ローカルにデプロイされたTomcatで、おそらくメモリの問題が原因で突然シャットダウンした場合、PermGenに関連するスタックトレースが表示されます。
私の質問は、シャットダウン前にログに問題が発生したという兆候がない場合、そこからどこに行くのですか?他にどのような場所を調べる必要がありますか?また、この突然のシャットダウンの考えられる原因は何ですか?
私の場合、これはWAS 6.1であり、複数のインスタンスがあり、1つのインスタンスのみが停止しました。死亡したこのインスタンスには、5つ以下の複数のアプリがあります。
delphi - アプリが終了したときにフォームが破棄される前に呼び出されることが保証されているDelphiイベントはありますか?
Delphi6Proを使用しています。アプリケーションが確実にシャットダウンしているが、フォームが破棄される前に発生するイベントが必要です。メインフォームのWndProc()でWM_QUITメッセージをトラップすることを考えましたが、WM_QUITメッセージが表示される前にフォームが破棄され始めたため、機能しませんでした。イベントのシャットダウンチェーンのこの時点でコードを実行するために使用できる標準のDelphiイベントがあるかどうか疑問に思いましたか?メインフォームのFormClose()イベントは起動が保証されておらず、FormDestroy()イベントが遅すぎるため、使用できません。何か案は?
java - 非準拠の JVM が WindowClosing イベントを送信しない場合の回避策
さまざまな OS X バージョンの Apple JVM は、必要なときに WindowClosing イベントを生成しないという点で壊れているようです (たとえば、閉じるボタンをクリックしてアプリのメイン JFrame を閉じた場合)。
(最新の Apple Java アップデートでは、イベントを強制的に生成するプロパティを設定できますが、これは私が探しているものではありません)
私の問題は単純です。ユーザーがアプリを閉じたときに「ヒント」を表示したいと思います。ただし、(イベントが生成されないため) ユーザーがウィンドウを閉じたことを検出できません。
だから私はシャットダウンフックを使うことができると思った:
ただし、シャットダウン フックから JFrame を作成することには問題があるようです。シャットダウン フックが呼び出されると、EDT が既になくなっているようです。
私はいくつかのことを試しましたが、何も意味がないようです: 私の「ヒント」JFrame がすべて灰色のまま (シャットダウンフック以外の場所から呼び出されたときに正常に動作しているにもかかわらず) や、プログラムがすぐに終了するなどです。ラッチを使用して、シャットダウン フックからのラッチを待機しようとしましたが、EDT がもう存在しないかのようです。
私は現在、回避策としてツールチップを表示するためだけに 2 つ目の Java アプリを生成することを真剣に検討していますが、それは少しやり過ぎだと思います (ただし、少なくとも機能するでしょう)。
シャットダウン フックからウィンドウを作成し、EDT で何かを呼び出そうとした人はいますか?注意すべき問題はありますか? (非常に長い間知られている Apple VM のバグのため、OS X でウィンドウを閉じるイベントを確実にキャッチできないことを思い出してください)。