■ サンプル
using System; using System.Threading; using System.Windows.Forms; namespace SampleForm { public partial class Form1 : Form { private WaitCallback waitCallback; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // ThreadMethodをスレッドプールで実行できるように WaitCallbackデリゲートを作成 this.waitCallback = new WaitCallback(ThreadMethod); } // 別スレッドで動作させるメソッド private static void ThreadMethod(object state) { for (int i = 0; i < 100; i++) { Thread.Sleep(5); Console.WriteLine(string.Format(" {0} : {1}", state, i)); } } private void button1_Click(object sender, EventArgs e) { // スレッドプールに登録 ThreadPool.QueueUserWorkItem( // 実行するメソッド this.waitCallback, // メソッドへ渡すデータ string.IsNullOrEmpty(this.textBox1.Text) ? "Default" : this.textBox1.Text); } } }
出力結果例
Default : 0 Default : 1 Default : 2 Default : 3 ・・・略・・・ Default : 98 Default : 99 D : 0 D : 1 D : 2 D : 3 ・・・略・・・ D : 99
参考文献
https://so-zou.jp/software/tech/programming/c-sharp/thread/#thread-poolhttps://www.atmarkit.co.jp/ait/articles/0504/20/news111_3.html
公式サイト
https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.threadpool?view=netframework-4.8https://docs.microsoft.com/ja-jp/dotnet/standard/threading/the-managed-thread-pool