スレッドで時刻を取得する

C# でアニメーションしながら、スレッドで時刻を取得して TextBox に表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. アニメーションのプログラムをベースにして、スレッドで時刻を取得して TextBox に表示します。
    ベースとなるプログラムは 「ちらつき」を無くす-1 を参照して下さい。
  2. デザイン画面を表示して、ツールボックスから TextBox を貼り付けて下さい。
    この TextBox にスレッドで取得した時刻を表示します。
  3. スレッドを使うときは using で System.Threading; を定義して下さい。
    using System.Threading;
    
  4. Main() メソッドにスレッドを起動するソースコードを追加します。
    threads がスレッドの領域で、TimeStr が取得した時刻を格納する領域です。
    new Thread(new ThreadStart(NowTime)) でスレッドを生成します。
    NowTime がスレッドで起動されるメソッドです。
    threads.Start() でスレッドを起動します。
    続いてアニメーションを行う MyForm を起動します。
    threads.Abort() でスレッドを停止します。
        static public Thread    threads;    // スレッドの領域
        static public String    TimeStr;    // スレッドで時刻を設定
    
        public static void Main()
        {
            try
            {
                MyForm.bmp= new Bitmap("c:\\data\\test\\girl.gif");
            }
            catch
            {   MessageBox.Show("イメージが取得できません", "Error");
                return;
            }
            threads = new Thread(new ThreadStart(NowTime));
            threads.Start();
    
            MyForm mf = new MyForm();
            Application.Run(mf);
    
            threads.Abort();
        }
    
  5. スレッドで起動される NowTime() メソッドです。
    現在時刻を取得して TimeStr に格納します。
    Sleep(1000) で一定間隔を置いて次の時刻を取得します。
        public static void NowTime()
        {
            while(true)
            {
                TimeStr = DateTime.Now.ToString();
                Thread.Sleep(1000);
            }
        }
    }
    
  6. OnPaint() メソッドでアニメーションしながら時刻を表示します。
    textBox1.Text = anime.TimeStr; がスレッドで取得した時刻を表示するコードです。
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics g = e.Graphics;
            if (SP_NO == -1)
            {
                SP_NO = 0;
                g.Clear(Color.LightGray);
            }
            g.DrawImage(bmp,new Rectangle(60,30,128,216),new Rectangle(SP_NO*128,0,128,216),GraphicsUnit.Pixel);
            textBox1.Text = anime.TimeStr;
        }
    

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

超初心者のプログラム入門(C# Frame Work)