問題タブ [termination]
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# - マルチスレッド-プログラム終了時のクリーンアップ戦略
マルチスレッドアプリケーションをクリーンな方法で終了するための最良の方法は何ですか?
別々のソケットでメインスレッドからいくつかのソケット接続を開始し、メインスレッドで営業日の終わりまで待って、現在System.Environment.Exit(0)
それを終了するために使用しています。
これにより、子の1つで未処理の例外が発生します。リストからスレッドを停止する必要がありますか?私はまだ子供たちに実際の停止を実装することを躊躇しているので、ベストプラクティスについて疑問に思っています。ソケットはすべて、ログアウトして閉じるための適切なデストラクタで適切にラップされていますが、それでもエラーが発生します。
c++ - C++TerminateProcess関数
Win32 API C ++関数TerminateProcess()の例を検索してきましたが、見つかりませんでした。
私は一般的にWin32APIに精通していないので、ここで私よりも優れている誰かが私に例を示すことができるかどうか尋ねたいと思いました。
- プロセスハンドルを終了するために必要なPIDでプロセスハンドルを取得し、それを使用してTerminateProcessを呼び出します。
C ++に慣れていない場合は、C#に相当するものも役立ちます。
java - 安全な方法でソフトウェアを閉じるにはどうすればよいですか?
これまで、私は自分のアプリケーションをスタンドアロン製品として使用していました。それで、ユーザーが「停止」ボタンを押したとき、私は電話System.exit(0);
をしました、そしてそれは大丈夫でした。
これで、私のアプリケーションは別のプログラムから(プログラム的に)呼び出されます。ですから、それSystem.exit(0);
は私のプロセスだけでなく、私のプログラムを開始した外部ソフトウェアも殺してしまうのではないかと心配しています。
では、外部ソフトウェアから対応するリクエストを受け取った場合にアプリケーションをシャットダウンする正しい方法は何ですか?私のアプリケーションはGUIアプリケーションです。したがって、ウィンドウを閉じたいのですが、プログラムによって実行されたすべてのプロセスも閉じたいのです。
追加した:
具体的には、プログラムによって開始されたすべてのスレッドを閉じたいと思います。私のプログラムはOSプロセスや他のプログラムを開始しません。
c# - アプリケーションが0スレッドで終了しない
非常にマルチスレッド化されたWinFormsデスクトップアプリケーションがあります。3つのスレッドがApplication.Runと他の一連のバックグラウンドワーカースレッドで実行されます。すべてのスレッドを適切にシャットダウンするのはちょっと難しいですが、私はついにそれを正しくしたと思いました。
しかし、実際にアプリケーションをデプロイしたとき、ユーザーはアプリケーションが終了しないことを経験し始めました。System.Threading.Mutexがあり、アプリを複数回実行できないようにしているため、タスクマネージャーに移動して、古いアプリを強制終了してから再度実行する必要があります。
すべてのスレッドは、メインスレッドが終了する前にThread.Joinを取得し、生成した各スレッドにログを追加しました。ログによると、開始するすべてのスレッドも終了し、メインスレッドも終了します。さらに奇妙なことに、SysInternals ProcessExplorerを実行すると、アプリケーションが終了するとすべてのスレッドが消えることがわかります。のように、0個のスレッド(マネージドまたはアンマネージド)がありますが、プロセスはまだ実行中です。
これを開発者のコンピューターやテスト環境で再現することはできません。これまでのところ、Windows XP(Vista、Windows 7、またはWindows Serverではない)でのみ発生することがわかりました。プロセスはどのようにして0スレッドで実行し続けることができますか?
編集:
ここにもう少し詳細があります。イベントループの1つは、COMオブジェクトを使用してデバイスドライバーと通信するWin32相互運用機能DLLをホストすることです。デバイスドライバーは時間に敏感であり、UIスレッドがかなりの時間(データベース呼び出しの終了を待つなど)ブロックするたびに、デバイスドライバーに干渉するため、独自のスレッドに配置しました。
そこで、メインスレッドがThread.Joinをデバイスドライバースレッドで実行するようにコードを変更しました。これにより、実際にアプリケーションがロックアップしました...結合が完了した後、UIスレッドでさらにいくつかの呼び出しがログに記録され、その後すべてが停止します。デバイスの電源がオフの場合、ドライバーは起動せず、問題は解決します。したがって、アプリケーションがシャットダウンされた後でも、ドライバーがアプリケーションを存続させる責任を負わなければならないようです。
c# - フォームの終了時に C# Abort()ing スレッド
これまでのところ、X ボタンがクリックされたときにこのコードを実行しましたが、これが終了時にフォームのスレッドを終了する正しい方法であるかどうかはわかりません。
「使用中の RCW を解放しようとしました。RCW はアクティブなスレッドまたは別のスレッドで使用されています。使用中の RCW を解放しようとすると、破損やデータ損失が発生する可能性があります。」
javascript - ブラウザプロセスが強制終了されたときにJavaScriptを実行するには?
HTML body タグで onUnload="cleanup()" を定義しています。javascript の cleanup() メソッドは
function cleanup() {--セッションのクリーンアップ--}.ただ、タスクマネージャーでプロセスをkillしてブラウザを終了させた際に、クリーンアップと同じ動作をさせたい。これはどのように行うことができますか?
cocoa - cocoa アプリで他のアプリケーションの終了または突然の終了を観察する
アプリケーションのラッパーを作成する必要があるため、アプリケーションを で開く小さなココア アプリを作成しまし[[NSWorkspace sharedWorkspace] launchApplication:…]
た。そのアプリケーションが終了または終了したときにイベントを登録できますか (アプリが良い方法または悪い方法で終了した場合は、イベントを取得する必要があります)。そのようなアプリケーションが毎秒実行されているかどうかを確認できることはわかっていますが、もっと良い方法があることを願っています。
c# - 親プロセスが C# で終了したときに子プロセスを終了する方法
タスク:親プロセスが終了した場合、すべての子プロセスを自動的に強制終了します。親プロセスは、正しい方法だけでなく、たとえば ProcessExplorer で強制終了することによっても終了できます。どうすればいいですか?
Job オブジェクトを使用するためのСtopicのアドバイスの同様の質問。外部DLLをエクスポートせずにC#で使用するには?
ジョブ オブジェクトを使用しようとしました。しかし、このコードは正しく動作しません:
PInvoke.SetInformationJobObject がエラーを返します。GetLastError はエラー 24 を返します。ただし、PInvoke.AssignProcessToJobObject は機能し、子プロセスがジョブ キューに追加されます (ProcessExplorer で確認できます)。しかし、 PInvoke.SetInformationJobObject が機能しないため、親プロセスを強制終了しても、生成されたプロセスは存続します。
このコードの何が間違っていますか?
iphone - コードでiPhoneアプリケーションを正常に終了するにはどうすればよいですか?
使い終わったときにiPhoneでアプリケーションを終了する適切な方法は何ですか?
ありがとう、
アントン