首页 > 编程 > C# > 正文

C#使用semaphore来管理异步下载请求的方法

2020-01-24 01:46:42
字体:
来源:转载
供稿:网友

本文实例讲述了C#使用semaphore来管理异步下载请求的方法。分享给大家供大家参考。具体实现方法如下:

var semaphor = new Semaphore(50, 50);// We allow at most 50 threads for crawlingvar resultPins = new List<Pin>();// Results stored hereforeach (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#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表