私は 3 に制限することを想定しているセマフォを持っていますが、これは必要な数だけ呼び出し続けます。(1000)を使っているからだと思います。ただし、() だけを試してみると、WaitOne を渡すことはありません。ここで何をすべきかわかりません。
private static Semaphore _pool;
_pool = new Semaphore(0, 3);
var options = new ParallelOptions();
options.MaxDegreeOfParallelism = 1;
Parallel.ForEach(urlTable.AsEnumerable(),options, drow =>
{
using (var WCC = new MasterCrawlerClass())
{
ActiveThreads++;
_pool.WaitOne(1000);
Console.WriteLine("Active Thread #: " + ActiveThreads);
WCC.MasterCrawlBegin(drow);
Console.WriteLine("Done Crawling a datarow");
ActiveThreads--;
_pool.Release();
}
});