private static void Main(string[] args) { var handle = new EventWaitHandle(true, EventResetMode.AutoReset); var handle2 = new EventWaitHandle(true, EventResetMode.ManualReset); var handle3 = new AutoResetEvent(true); CountdownEvent ce = new CountdownEvent(4); WaitHandle.WaitAny(new[] { ce.WaitHandle }); var instance = new SingleThreaded(); new Thread( () => { instance.OneCallInstance1(); ce.Signal(); }).Start(); new Thread( () => { lock (instance) { Console.WriteLine("Main"); Console.ReadLine(); Console.WriteLine("Main"); } ce.Signal(); }).Start(); new Thread( () => { instance.OneCallInstance2(); ce.Signal(); }).Start(); new Thread( () => { instance.OneCallLockThis(); ce.Signal(); }).Start(); // new Thread(() => { // SingleThreaded.OneCallStatic1(); // }).Start(); // new Thread(() => { // SingleThreaded.OneCallStatic2(); // }).Start(); ce.Wait(); // Console.ReadLine(); }
static void Main(string[] args) { var handle = new EventWaitHandle(true, EventResetMode.AutoReset); var handle2 = new EventWaitHandle(true, EventResetMode.ManualReset); var handle3 = new AutoResetEvent(true); CountdownEvent ce = new CountdownEvent(4); WaitHandle.WaitAny(new WaitHandle[] { ce.WaitHandle }); var instance = new SingleThreaded(); new Thread(() => { instance.OneCallInstance1(); ce.Signal(); }).Start(); new Thread(() => { lock (instance) { Console.WriteLine("Main"); Console.ReadLine(); Console.WriteLine("Main"); } ce.Signal(); }).Start(); new Thread(() => { instance.OneCallInstance2(); ce.Signal(); }).Start(); new Thread(() => { instance.OneCallLockThis(); ce.Signal(); }).Start(); //new Thread(() => { // SingleThreaded.OneCallStatic1(); //}).Start(); //new Thread(() => { // SingleThreaded.OneCallStatic2(); //}).Start(); ce.Wait(); //Console.ReadLine(); }