関連記事
【ChatGPT o4】祝日なのに仕事ーバテすぎー今夜こそ絶命だーモルモルモル 【2025年03月20日(木)】
- 【#CSharp】制御系が動き出したべ 【2025年02月20日(木)】
- 【#CSharp】ひっさしぶりにガッツリなC#案件をやっているぞー 【2025年02月19日(水)】
- 今週もひたすらモノ書き #JAVA 祭りがまだまだ続く そろそろC#を書かせろー 【2024年12月04日(水)】
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
なにかと,スレッドのサンプルコード,必要なんですわなぁ~
あちこち散らばったプロジェクトから,あ~でもないこ~でもないと,抜き出すのが,だんだん面倒になったんで
スケルトンを書いておきますです
勝手に持っていっちゃってくださいませぇ~~♥
なお,こやつ,インスタンスを作れば,スレッドが作成され
待機状態へ
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 } } }
コメント
【#桜】国富:大坪の一本桜を見物に行った!咲いてなかったドロドロドロ(25/3/22)
3月下旬なのに鰐塚山が雪を被ってる.これはヤバス(25/3/19)
JR日豊線・仙巌園駅3月15日開業 周辺含む総整備費は12億円、開業合わせ磯ビーチハウスにカフェオープン
【#確定申告】税務がオワタ!所得税&消費税申告書を提出した!財務省の役人どもはこの恨み,祝ってやるドロドロドロ
【#火事】都農町のキャンプ場近くで山林火災 現在も消火活動中(27日午後6時15分現在)
宮崎ー台湾 国際定期便が週2往復に増便へ 来月30日から(25/2/15)
『にっぽん縦断 こころ旅』4月から田中美佐子が新たな旅人に 火野正平さんが14年間担当
オリックス・バファローズのキャンプ見学に行ってきた,昨日(爆(25/2/9)