1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public void Do(int n)
{
var c = n;
var wh = new ManualResetEvent(false);
var semaphore = new Semaphore(20, 20);
for (int i = 0; i < n; i++)
{
var j = i;
var thread = new Thread(() =>
{
try
{
semaphore.WaitOne();
using (var asynchronousClient = new AsynchronousServiceReference.HelloWorldServiceClient())
{
asynchronousClient.HelloWorld("Toto");
Console.WriteLine(j);
}
}
finally
{
if (Interlocked.Decrement(ref c) == 0)
{
wh.Set();
}
semaphore.Release();
}
});
thread.Start();
}
wh.WaitOne();
} |
Partager