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 | using System; using System.Threading; [System.Runtime.Remoting.Contexts.Synchronization( true )] // 1 class My : ContextBoundObject { static void Main( string [] args) { My my = new My(); ThreadPool.QueueUserWorkItem(my.FuncA); Thread.Sleep(50); ThreadPool.QueueUserWorkItem(my.FuncA); Thread.Sleep(50); ThreadPool.QueueUserWorkItem(my.FuncB); Thread.Sleep(50); ThreadPool.QueueUserWorkItem(my.FuncA); Console.ReadLine(); } AutoResetEvent myEvent = new AutoResetEvent( false ); public void FuncA( object state) { Console.WriteLine( "Start A" ); System.Threading.Thread.Sleep(2000); Console.WriteLine( "End A" ); } public void FuncB( object state) { Console.WriteLine( "Start B" ); myEvent.WaitOne(10 * 1000, true ); // 2 Console.WriteLine( "End B" ); } } |
联系客服