読者です 読者をやめる 読者になる 読者になる

プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

C# スレッド処理 Threadを使う


C#によるマルチコアのための非同期/並列処理プログラミングより

Threadを直接扱う
直接スレッドを実行するにはSystem.Threading名前空間
Threadクラスを使用します。

using System;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void Mbdx() {
            MessageBox.Show("非同期学習中");
        }

        private void button1_Click(object sender, EventArgs e) {
            Mbdx();
        }

        private void button2_Click(object sender, EventArgs e) {
            //スレッドの生成と開始
            Thread t = new Thread(new ThreadStart(Mbdx));
            t.Start();
        }
    }
}

button1でMessageBoxを呼び出す場合、ポップアップのOKを
押さなければフォームは移動できない。
f:id:tos5511:20160213060607p:plain

button2では別スレッドでMessageBoxを呼び出す為、
ポップアップのOKを押さなくてもフォームを移動できる。
f:id:tos5511:20160213060651p:plain

Threadの終了を待つ場合、Joinメソッドを使う

//スレッドの生成と開始
Thread t = new Thread(new ThreadStart(スレッドで実行するメソッド));
t.Start();
//スレッドの終了を待つ
t.Join();