関連記事
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
- Javaの”やらかし”でC#と人気逆転か 激変プログラミング言語人気ランキング 【2023年10月18日(水)】
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
なにかと,スレッドのサンプルコード,必要なんですわなぁ~
あちこち散らばったプロジェクトから,あ~でもないこ~でもないと,抜き出すのが,だんだん面倒になったんで
スケルトンを書いておきますです
勝手に持っていっちゃってくださいませぇ~~♥
なお,こやつ,インスタンスを作れば,スレッドが作成され
待機状態へ
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 } } }
コメント
生駒高原へコスモスを見物しに行ってみた
急激に寒くなってキター 晩秋がやってきた!
【#諸塚村】連休初日のBBQの模様なぞをアップしてみる
冷房なしで日中過ごすの,いつ以来よっ!?優しい涼しさが心地よい
【#異星人 発見!】異星人から謎の暗号メールを受け取った!解読不能ヤバス【シレペヒキク】
タッパーウェアが破産申請を計画、事業てこ入れ策つまずく-関係者
電子レンジが不調になったヤバス
【#地震】霧島山で有感地震 生駒高原のあたりか?(24/9/6)
奄美大島のマングース 環境省が根絶宣言