気になった事を自由に書いてます。
      
フォアグラウンドとバックグラウンド スレッド
普段何気につかってるスレッドは実は2種類あるってことを大分前に知りました。そのメモです。
.NET Framework 2.0のスレッドはフォアグラウンドとバックグラウンドの2種類あります。

Threadクラスを用いて作成したスレッドはデフォルトとしてフォアグラウンドスレッド
となります。このスレッドが動作している間はApplication.Exit()などで抜けたとしても
プロセスは終了しません。一方、バックグラウンドスレッドはすべてのフォアグラウンドスレッドが終了すると 強制的に終了します。

ちらっと書きましたが、フォアグラウンドでスレッドを動かしている最中だと
画面を閉じてもプロセスは終了しません。よく分かんないで使っていると
画面を閉じたのにプロセスがしばらく終了しない、なぜ!?となるのでご注意を^^;

フォアグラウンドとバックグラウンド スレッド

下のサンプルコードはボタンを押して画面を閉じアプリを終了させます。が閉じる前に
フォアグラウンドでスレッドを実行しているので、10秒間経たないとアプリが終了しません。
サンプル
1
2
3
4
5
6
7
8
9
10
11
12

private void button1_Click(object sender, EventArgs e)
{
    Thread t = new Thread(new ThreadStart(ThreadProc));
    // 下のコメントを外すとバックグラウンドスレッドになります。
    //t.IsBackground = true;
    t.Start();
    this.Close();
}
public void ThreadProc()
{
    Thread.Sleep(10000);
}

バックグラウンドの設定方法はThread.IsBackgroundプロパティをtrueにします。 falseのときはフォアグラウンドスレッドです。
最初のほうにデフォルトはフォアグラウンドスレッドといいましたが、アンマネージコード
からマネージ実行環境に入るスレッドはすべてバックグラウンドスレッドとなります。
      






Copyright (C) 2011 - 2017 猫の気ままなC#日記