MSDN で、フォアグラウンド スレッドとバックグラウンド スレッドの違いは、フォアグラウンド スレッドがすべて終了するまでアプリケーションを終了できないのに対し、バックグラウンド スレッドを待つ必要がないことです。スレッドの理解を深めるために、これを試してみることにしました。
Thread t = new Thread(Work); //Work() just has the thread sleep for a long time
t.IsBackground = false; //make it a foreground thread
t.Start();
while(true)
{
if(Session["checker"] != null)
{
Session["checker"] = true;
System.Diagnostics.Debug.Write("I'm here!");
}
}
セッション変数を使用して、AppDomain の再起動時にセッションがクリアされるため、AppDomain が再起動されたかどうかを確認しました。
したがって、web.config ファイルを保存すると、AppDomain の再起動がトリガーされます。これには、フォアグラウンドで実行されているt
ため、実行時間の長いスレッドを待機する必要があります。t
ただし、web.config ファイルに触れると、すぐにクリアさSession["checker"]
れて「I'm here!」と出力されるため、アプリケーションがスレッドを待機していないことがわかります。
フォアグラウンド スレッドがどのように機能するかを誤解していますか? AppDomain の再起動は、スレッドが実行を終了してからセッション変数のクリアを開始するのを待つべきではありませんか?
ありがとう