private static async void DoWork3(Object request) { AccessMode am = (((Int32)request) % 10 == 0) ? AccessMode.Exclusive : AccessMode.Shared; await s_arwl.WaitAsync(am); Console.WriteLine("Request #{0:00}, Time={1:hh:mm:ss}, Threads={2:00}, Access={3}", request, DateTimeOffset.Now, Process.GetCurrentProcess().Threads.Count, am); for (Int64 stop = Environment.TickCount + 1000; Environment.TickCount < stop;) { ; } s_arwl.Release(); s_cde.Signal(); }