今回は、仕事で非同期通信を行う機会があったので、非同期通信の方法を備忘録として記載しておきます。
非同期通信の方法はいくつかあったのですが、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処理実行」が同時に行われていることがわかります。
このようにマルチスレッド処理では、処理の完了を待たずに並列で処理を実行することができます。
まとめ
今回は、メインスレッドとは、別のスレッドでの処理を行う方法を紹介しました。
このようにマルチスレッドの処理を行うことで、処理を同時に行うことができるので、
重たい処理を行う時や、常に画面を監視するようなシステムを作りたい時に、利用することができます。
また、今回紹介したプログラムが、基本の形となり、今後の応用で、「別スレッドで画面のフォームを更新する方法」や、
「別スレッドで常に画面を監視するシステムの作成方法」を紹介しようと思います。