関連記事
- なんと!今週の土曜日も仕事してますた.来週の土曜日も仕事臭い.TCPソケット通信をゴリゴリ書いてる 【2025年08月30日(土)】
- 【ChatGPT o4】祝日なのに仕事ーバテすぎー今夜こそ絶命だーモルモルモル 【2025年03月20日(木)】
- 【#CSharp】制御系が動き出したべ 【2025年02月20日(木)】
- 【#CSharp】ひっさしぶりにガッツリなC#案件をやっているぞー 【2025年02月19日(水)】
- 今週もひたすらモノ書き #JAVA 祭りがまだまだ続く そろそろC#を書かせろー 【2024年12月04日(水)】
なにかと,スレッドのサンプルコード,必要なんですわなぁ~
あちこち散らばったプロジェクトから,あ~でもないこ~でもないと,抜き出すのが,だんだん面倒になったんで
スケルトンを書いておきますです
勝手に持っていっちゃってくださいませぇ~~♥
なお,こやつ,インスタンスを作れば,スレッドが作成され
待機状態へ
Start()メソッドで,処理本体が起動しますです…
なお,このサンプルでは,2スレッド起動されます
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace bMountLibrary
{
public class ClassThreadSample
{
#region クラス
public class ThreadJobFixArg : EventArgs
{
private int m_ThreadNo;
private int m_FixCount;
public int ThreadNo { get { return m_ThreadNo;} set { m_ThreadNo = value;}}
public int FixCount { get { return m_FixCount;} set { m_FixCount = value;}}
public ThreadJobFixArg(int tmpNo, int tmpFixCount)
{
m_ThreadNo = tmpNo;
m_FixCount = tmpFixCount;
}
}
public class ThreadLoopEndArg : EventArgs
{
private int m_ThreadNo;
public int ThreadNo { get { return m_ThreadNo;}}
public ThreadLoopEndArg(int tmpNo){ m_ThreadNo = tmpNo;}
}
#endregion
#region イベント
public delegate void OnThreadJobFix(object o, ThreadJobFixArg e);
public delegate void OnThreadLoopEnd(object o, ThreadLoopEndArg e);
public event OnThreadJobFix OnThreadJobFixEvent; //スレッド処理中向けイベント
public event OnThreadLoopEnd OnThreadLoopEndEvent; //スレッドループアウト伝達向けイベント
#endregion
private bool m_ThreadOnFL; //スレッドループを生かしている間はTrue
private bool m_ThreadJob1FL; //スレッド処理を開始する場合はTrue
private bool m_ThreadJob2FL;
private Thread m_Thread1;
private Thread m_Thread2;
//---------------------------------------------
//コンストラクタ
//
//---------------------------------------------
public ClassThreadSample()
{
OnThreadJobFixEvent = null;
OnThreadLoopEndEvent = null;
m_Thread1 = new Thread(new ThreadStart(ThreadMethod1));
m_Thread2 = new Thread(new ThreadStart(ThreadMethod2));
m_Thread1.Name = "サンプルスレッド_Loop1";
m_Thread2.Name = "サンプルスレッド_Loop2";
m_Thread1.Start();
m_Thread2.Start();
}
//---------------------------------------------
//リソースの開放
//
//---------------------------------------------
public void Dispose()
{
#region
m_ThreadOnFL = false;
for(int i = 0; i < 200; i++) //スレッドが死ぬまで最大200ミリ秒待たしてみる
{
if ((m_Thread1 == null) && (m_Thread2 == null))
{
break;
}
Application.DoEvents();
Thread.Sleep(1);
}
#endregion
}
//---------------------------------------------
//スレッド処理の開始
//
//---------------------------------------------
public void Start()
{
#region
m_ThreadJob1FL = true; //スレッド処理を開始するときはTrueにする
m_ThreadJob2FL = true;
#endregion
}
//---------------------------------------------
//スレッドによるデータ再編成処理主処理(1)
//
//---------------------------------------------
private void ThreadMethod1()
{
#region
while (m_ThreadOnFL == true)
{
if (m_ThreadJob1FL == false) //フラグがfalse時は待機させる
{
Thread.Sleep(1);
continue;
}
//------------------------------------------
//ここいらにお好きな処理を書いてくださいませ
//------------------------------------------
m_ThreadJob1FL = false; //処理が終わったら待機動作へもどすとか?
if (OnThreadJobFixEvent != null) //1処理完了したら,イベントを飛ばしてみたり
{
OnThreadJobFixEvent(this, new ThreadJobFixArg(1, 0));
}
}
if (OnThreadLoopEndEvent != null) //スレッドループを抜けたら,イベントを飛ばしてみたり
{
OnThreadLoopEndEvent(this, new ThreadLoopEndArg(1));
}
m_Thread1 = null;
#endregion
}
//---------------------------------------------
//スレッドによるデータ再編成処理主処理(2)
//
//---------------------------------------------
private void ThreadMethod2()
{
#region
while (m_ThreadOnFL == true)
{
if (m_ThreadJob2FL == false)
{
Thread.Sleep(1);
continue;
}
//------------------------------------------
//ここいらにお好きな処理を書いてくださいませ
//------------------------------------------
m_ThreadJob2FL = false; //処理が終わったら待機動作へもどすとか?
if (OnThreadJobFixEvent != null)
{
OnThreadJobFixEvent(this, new ThreadJobFixArg(2, 0));
}
}
if (OnThreadLoopEndEvent != null)
{
OnThreadLoopEndEvent(this, new ThreadLoopEndArg(2));
}
m_Thread2 = null;
#endregion
}
}
}

コメント
【#HTVX】新型宇宙輸送船HTV-X 油井さんがロボットアームでキャッチ
【冬】来週11℃予想とか出てきてる.秋があったのか,今年(25/10/23)
【ツル】出水平野に冬の訪れを告げるツル第一陣・今季初飛来 鹿児島(25/10/21)
都城でプロ野球・ロッテ1軍が春季キャンプ実施へ
山形で開催の映画祭 監督など国内外の参加者が“芋煮”味わう
連休なんで生駒高原でコスモスを愛でてきた
連休の中日ですの.天気は良くなる方向じゃげ
【大リーグ】大谷翔平 先頭打者HR ワイルドカードシリーズ
10月に入りましたなぁ.今年もあと90日ちょっと,早い!