私はマルチスレッドが初めてです。Windows サービスでは、SemaphoreSlim クラスを使用してスレッド ガバナーを開始しています。SemaphoreSlim コンストラクターは、スレッド プール サイズと最大スレッド プール サイズの 2 つの引数を受け取ります。これを次のように設定しました-
int poolSize = 2;
SemaphoreSlim threadGoverner = new SemaphoreSlim(poolSize, poolSize);
そのため、threadGoverner は WindowsService の開始時、つまり OnStart イベント時に初期化されます。現在、これら 2 つのスレッドは、ある種のジョブを処理するために使用されています。プール サイズを動的に変更する必要があるという要件があります。したがって、プール サイズが 3 に変更された場合、サービスは 3 つの要求の処理を開始する必要があります。
だから、私がやろうとしているのは、バッチ コマンド ファイルを使用してサービスを再起動することです。しかし、私が直面している問題は、複数のスレッドが実行されている場合、別のスレッドがこれらのジョブを処理し続けることです。そして、それが私のサービスの異常な動作を引き起こしています。
私が望むのは、プール サイズの変更を検出した場合、ジョブの処理を開始するスレッドがないため、異常なくサービスを再起動できることです。
誰でもこれで私を助けることができますか?