(转)旴江老段 http://www.cnblogs.com/gnaguix/archive/2011/02/28/1967150.html
我们知道异步调用会在线程池中,调用或者创建一个线程来运行异步委托指向的方法。
但是当异步委托指向的方法运行结束之后,AsyncCallback委托指向的方法和主线程方法怎么同步呢?
我做了一个例子

1 private delegate void DelegateRun(); 2 protected void Page_Load(object sender, EventArgs e) 3 { 4 DelegateRun dr = Run; 5 dr.BeginInvoke(Complete, null); 6 for (int i = 0; i < 100; i++) 7 { 8 Response.Write("Main " + i.ToString() + "<br/>"); 9 Response.Flush(); 10 Thread.Sleep(100); 11 } 12 } 13 private void Run() 14 { 15 for (int i = 0; i < 5; i++) 16 { 17 Response.Write("worker thread " + i.ToString() + "<br/>"); 18 Response.Flush(); 19 Thread.Sleep(1000); 20 } 21 } 22 private void Complete(IAsyncResult resulte) 23 { 24 for (int i = 0; i < 50; i++) 25 { 26 Response.Write("worker thread Complete" + i.ToString()+ "<br/>"); 27 Thread.Sleep(100); 28 }
所以我觉得 AsyncCallback委托指向的方法依然是多线程运行。