多線程17-Async Programming Model

     class Program
    {
         private  delegate  string RunOnThreadPool( out  int threadId);
         private  static  void Callback(IAsyncResult ar)
        {
            Console.WriteLine( " Starting a callback ");
            Console.WriteLine( " State passed to a callback:{0} ", ar.AsyncState);
            Console.WriteLine( " Is Thread Polll Thread={0} ", Thread.CurrentThread.IsThreadPoolThread);
            Console.WriteLine( " Thread pool worker thread id :{0} ", Thread.CurrentThread.ManagedThreadId);
        }
         private  static  string Test( out  int ThreadId)
        {
            Console.WriteLine( " Starting .... ");
            Console.WriteLine( " Is thread pool thread:{0} ", Thread.CurrentThread.IsThreadPoolThread);
            Thread.Sleep( 2);
            ThreadId = Thread.CurrentThread.ManagedThreadId;
             return  string.Format( " Thread pool worker therad id was ={0} ", ThreadId);
        }
         static  void Main()
        {
             int threadId =  0;
            RunOnThreadPool poolDelegate = Test;
             var t =  new Thread(() => Test( out threadId));
            t.Start();
            t.Join();
            Console.WriteLine( " Thread id:{0} ", threadId);
            IAsyncResult r = poolDelegate.BeginInvoke( out threadId, Callback,  " a delegae asyncResult call ");
             string result = poolDelegate.EndInvoke( out threadId, r);
            Console.WriteLine( " Thread pool worker thread id:{0} ", threadId);
            Console.WriteLine(result);
            Thread.Sleep(TimeSpan.FromSeconds( 2));         }     }
相關文章
相關標籤/搜索