今回は、仕事で非同期通信を行う機会があったので、非同期通信の方法を備忘録として記載しておきます。

非同期通信の方法はいくつかあったのですが、Thread関数を利用した方法を紹介していきます。

まずマルチスレッドとは、プログラムを実行し処理を行う時に、複数の処理を並列して行う処理のことです。

重い処理や、バックグラウンド処理を行う時に利用します。

それではさっそく始めていきます。

 

簡単なマルチスレッド 非同期通信の例

最もシンプルな形を紹介してきます。

下記のように画面を作りました。startボタンを押すと、メインのスレッドの処理で10回「スレッド1処理実行」とコンソールに書き込みます。

その間に別スレッドを動かし、別メッセージ「スレッド2処理実行」とコンソールに書き込みむプログラムを実行してみます。

画面

プログラム

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

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

        private void button1_Click(object sender, EventArgs e)
        {

            Thread threadTest;
            threadTest = new Thread(new ThreadStart(ThreadJikko));
            threadTest.Start();

            for (int i = 0; i< 10; i++)
            {
                Console.WriteLine("スレッド1処理実行");
                Thread.Sleep(50);
            }

        }

        private void ThreadJikko()
        {
            Console.WriteLine("スレッド2処理実行");
        }
    }
}

 

結果

結果を見ると、「スレッド1処理実行」の処理が10回行われている間に、「スレッド2処理実行」が同時に行われていることがわかります。

このようにマルチスレッド処理では、処理の完了を待たずに並列で処理を実行することができます。

 

まとめ

今回は、メインスレッドとは、別のスレッドでの処理を行う方法を紹介しました。

このようにマルチスレッドの処理を行うことで、処理を同時に行うことができるので、

重たい処理を行う時や、常に画面を監視するようなシステムを作りたい時に、利用することができます。

また、今回紹介したプログラムが、基本の形となり、今後の応用で、「別スレッドで画面のフォームを更新する方法」や、

「別スレッドで常に画面を監視するシステムの作成方法」を紹介しようと思います。

 

C#の記事一覧

 

おすすめの記事