関連記事
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
- 生成AI「仕事で利用」2割 正確性などに懸念(23/5/7) 【2023年05月07日(日)】
- 【#RaspberryPI】ラズパイでsudo起動の.Net6アプリがデバグできない件 【2023年04月22日(土)】
- 【#PostgreSQL】テーブルから取得したレコードセットをCSVへ落とそうとすると,空ファイルが出来る...ドロドロドロ 【2023年03月08日(水)】
- 【#git】TortiseGit ver2.14のGitWCRev.exeを動かすとErrorCD:10を出力して,動かない 【2023年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 } } }
コメント
イーロン・マスク氏 「X」全利用者に少額課金求める考え示す
“吉田屋”の駅弁 1都23県295人が体調不良を訴える 八戸市保健所
【アゼルバイジャン】ナゴルノカラバフ アルメニア側“事実上敗北” 死者200人超か
【#冬】全国的に暖冬の見通し、気象庁(23/9/19)
城の目の前で交通事故じゃげ
【#線状降水帯】長崎に線状降水帯が出た!(23/9/14)
阪神の「アレ騒ぎ」にインバウンドも警戒? 台湾は“大阪の混雑地”への外出自粛呼びかけ 「事件発生の恐れ」
あす行われる自民党の役員人事 岸田首相に一任(23/9/12)