8

C#で記述したフォームを閉じても、VisualStudioDebugが停止しません。フォームを閉じるときにデバッグプロセスを停止するにはどうすればよいですか。フォームを閉じるイベントにApplication.Exit()メソッドを追加しましたが、機能しませんでした。

ありがとうございました。

4

4 に答える 4

7

ここからこれを試してください

If (System.Windows.Forms.Application.MessageLoop)
{
  // Use this since we are a WinForms app
  System.Windows.Forms.Application.Exit()
}
Else
{
  // Use this since we are a console app
  System.Environment.Exit(1)
}

編集:

実行中のinfiniteスレッドがある場合は、

Thread myThread = new Thread(...);
myThread.IsBackground = true; //set your running thread to background
myThread.Start(...);

そして、あなたはその方法を見ることができますか?ここから

于 2012-04-13T08:28:59.930 に答える
1

さて、これは4年遅すぎるでしょう、しかし、私はこの問題に遭遇した他の人のためにこれを投稿すると思いました(私がちょうどしたように)、これがかなり基本的であるならば事前に申し訳ありません、私はC#にかなり新しいのでこれは私を少し投げました。

OPと同じ問題が発生し、FormClosingイベントで、Application.Exit()もEnvironment.Exit(0)もデバッガーを終了しませんでした。

私が見つけたのは、FormClosingイベントの上の参照数を調べていたところ、「0参照」が表示されていました。別のフォーラムからクロージングイベントをコピーして貼り付けたばかりだったので、作成/コピーしたイベントを実際に処理するイベントハンドラーがありませんでした。

これを解決する簡単な方法の1つは、(コードをコピーして貼り付ける以外に)イベントハンドラーを作成することでした。

  • まず、[Form1.cs[デザイン]]タブに移動します
  • [プロパティ]ボックスに移動します
  • 「イベント」をクリックします
  • 'FormClosing'を見つけて、それをダブルクリックします

同じ問題が発生した場合は、イベントへの参照が少なくとも1つあることがわかります。これで、フォームを閉じると、デバッガーも停止するはずです。

于 2016-12-01T05:31:00.737 に答える
1

デバッグされたアプリケーションがシャットダウンされたときにVSが停止していなかったため、この質問にたどり着きました。

ideがハングする原因を確認する1つの方法は、一時停止をクリックし、[デバッグの場所]ツールバーでまだ実行中のスレッドを表示することです。私にとっては、破棄されなかったRabbitMqコンテキストがまだ存在することに気づきました。だからこれが私が必要とした手がかりでした。

コードを変更した後、アプリケーションが終了すると、VSはデバッグセッションを停止します。

これはあなたが期待している解決策ではないことは知っていますが、アプリケーションが適切に終了しない理由や、バックグラウンドプロセスを維持している理由を見つけることは非常に難しい問題です。アクティブなスレッドのドロップダウンは、私見を見るのに最適な場所です。

于 2018-01-19T16:01:18.933 に答える
0

もう1つの可能性は、プロセスが正しく処理されない例外で実行されることです。以前はセルフビルドダイアログに例外メッセージを表示していましたが、作成したウィンドウを表示するのを忘れていました。そのため、プログラムは例外に遭遇し、ウィンドウを作成しましたが、その兆候はまったく表示されませんでした...そのため、アプリケーションを閉じてもプロセスは実行され続けました。

于 2014-07-30T08:52:15.973 に答える