関連記事
- 【#PostgreSQL】テーブルから取得したレコードセットをCSVへ落とそうとすると,空ファイルが出来る...ドロドロドロ 【2023年03月08日(水)】
- 【#git】TortiseGit ver2.14のGitWCRev.exeを動かすとErrorCD:10を出力して,動かない 【2023年02月08日(水)】
- 【#Excel】Excel-COMを叩くアプリの改造,オワタ 【2023年01月18日(水)】
- 【#CSHARP】System.Numerics.Vectorでグリングリン,AVXレジスタをぶん回したい 【2023年01月14日(土)】
- 【#PostgreSQL】鬼のような4本のSQLを書き上げた 【2023年01月13日(金)】
なにかと,スレッドのサンプルコード,必要なんですわなぁ~
あちこち散らばったプロジェクトから,あ~でもないこ~でもないと,抜き出すのが,だんだん面倒になったんで
スケルトンを書いておきますです
勝手に持っていっちゃってくださいませぇ~~♥
なお,こやつ,インスタンスを作れば,スレッドが作成され
待機状態へ
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 } } }
コメント
【#WBC2023】村上の逆転サヨナラ打で3大会ぶりの決勝進出
【#桜】宮崎~国富:大坪の一本桜にて春を満喫してきた(23/3/18)
【速報】ガーシー前議員「引っ越しする」 警視庁が逮捕状請求
今日は東日本大震災12年(23/3/11)
【#WBC2023】1次ラウンド 日本 8-1 中国 大谷翔平さんが凄かった
【#電気代】23年2月分の電気代,安すぎワロタ Ryzen7 7700xに変えてから目に見えて電気使用量が減ってる件
【H3】初号機 今月6日に改めて打ち上げの方向で調整 JAXA(23/3/3)
【#WBC2023】大谷翔平『小型飛行機』で名古屋入り