• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C#使用semaphore 管理异步下载请求

OC/C/C++ 水墨上仙 2976次浏览

C#使用semaphore 管理异步下载请求

 var semaphor = new Semaphore(50, 50);  // We allow at most 50 threads for crawling
            var resultPins = new List<Pin>();  // Results stored here
            foreach (var pin in new HashSet<string>(pinIdList))
            {
                semaphor.WaitOne();
                Console.Write(">");
                var pinClient = new WebClient();
                pinClient.DownloadStringCompleted += (sender, ex) =>
                {
                    var html = ex.Result.Replace("\n", "");
                    pinClient.Dispose();
                    lock (pinIdList)
                    {
                         // do some post-processing and write back the results
                    }
                    Console.Write("<");
                    semaphor.Release();
                };
                pinClient.DownloadStringAsync(new Uri(string.Format("http://pinterest.com/pin/{0}/", pin)));
            }
            for (int i = 0; i < 50; i++) semaphor.WaitOne();    // Wait until the last thread ends.
            semaphor.Dispose();
            Console.WriteLine();


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C#使用semaphore 管理异步下载请求
喜欢 (0)
加载中……