揮発性のメモ2

http://d.hatena.ne.jp/iww/

別スレッドからフォームをいじる

using System.Threading;  // スレッド用

public partial class Form1 : Form
{
    // スレッドクラス
    private Thread thread;

    public Form1()
    {
        InitializeComponent();

        // スレッドの起動
        thread = new Thread(new ThreadStart(this.myThread));
        thread.IsBackground = true; // 親子心中フラグ オン
        thread.Start();
    }
        
    // スレッド部分
    private void myThread()
    {
        for(int i=0; i<10; i++){
            if(i % 2 == 1){
                Invoke(new delColor(setLabelColor), Color.LightGreen);
            }else{
                Invoke(new delColor(setLabelColor), Color.DarkGreen);
            }
            Thread.Sleep(1000);
        }
    }

    // スレッドからラベルの背景に色を付ける
    delegate void delColor(System.Drawing.Color color);
    internal void setLabelColor(System.Drawing.Color color)
    {
        this.label1.BackColor = color;
    }

.IsBackground を真にすると、親が死んだ時に子も死ぬ。 スレッドの終了方法考えなくてよくなるので便利。