質問: * VisualStudio 2019 * .NET Core 2.2
回答: 下記のようにキューに積む時にカウンターをインクリメントして、処理開始したらデクリメントするのはどうでしょう? ``` using System; using System.Threading; namespace ThreadPoolTest { class Program { static int WaitingThreadCount = 0; static void MyThread(object i) { Console.WriteLine($"15秒待機開始 i = {(int)i}"); WaitingThreadCount--; Thread.Sleep(TimeSpan.FromSeconds(15)); Console.WriteLine($"15秒待機終了 i = {(int)i}"); } static void Main(string[] args) { ThreadPool.SetMinThreads(10, 10); ThreadPool.SetMaxThreads(10, 10); for (var i = 0; i < 1000; i++) { ThreadPool.GetAvailableThreads(out var availableWorkerThreads, out _); Console.WriteLine($"利用可能スレッド数(空きスレッド数) = {availableWorkerThreads}"); Console.WriteLine($"実行待機中の数 = {WaitingThreadCount}"); WaitingThreadCount++; ThreadPool.QueueUserWorkItem(new WaitCallback(MyThread), i); Thread.Sleep(1000); } } } } ```