0

C# を使用して、WSP をインストールして SharePoint サーバーに展開する Windows フォームを作成しています。私が抱えている問題は、問題を検出してアプリケーションを終了したとき、またはフォームの右上にある十字が押されたときにフォームが閉じても、タスクがまだプロセス リストにあるということです。

私の終了コードは次のとおりです。

this.close();
application.quit();

フォーム間で変更する方法は次のとおりです。

form2.show();
form1.hide();

これまでのところ、いくつかのバックグラウンドワーカーを使用していると思いますが、これらは同時に終了していない可能性がありますか?

ありがとう

4

2 に答える 2

3

バックグラウンド スレッドとして設定されていないすべてのスレッドが終了すると、プロセスは終了します。

BackgroundWorker は内部的にデリゲートで BeginInvoke を呼び出し、これによりコードが ThreadPool からスレッドを実行します。ThreadPool スレッドでは IsBackground が true に設定されているため、アプリケーションがハングすることはありません。BackgroundWorker が問題を引き起こしている可能性は低いです。

new Thread()多くの場合、または同様の方法を使用して新しいスレッドを手動で作成しているコード内の場所があり、このスレッドのIsBackgroundメンバーを true に設定していません。

于 2010-01-19T08:38:47.813 に答える
1

デバッガーをアタッチするのは非常に簡単なはずです (問題が発生しているマシンにデバッガーがない場合は、マネージド スタック エクスプローラーを入手できます)。プロセスに割り込んで、現在実行中のスレッドを確認できます。Visual Studio では、[スレッド] ウィンドウを見て、コードを実行しているスレッドを見つける必要があります。それをダブルクリックしてから、コール スタック ウィンドウを見て、何が滞っているのかを確認します。

于 2010-01-19T08:40:26.890 に答える