微软平台技术学习笔记

学习,思考,实践

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

我们知道异步调用会在线程池中,调用或者创建一个线程来运行异步委托指向的方法。

但是当异步委托指向的方法运行结束之后,AsyncCallback委托指向的方法和主线程方法怎么同步呢?

我做了一个例子

 View Code

 
 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         }
29 

 结果

所以我觉得 AsyncCallback委托指向的方法依然是多线程运行。

posted on 2011-02-28 16:54  旴江老段  阅读(1804)  评论(0)    收藏  举报