欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-13 13:25:28
本文实例讲述了c#使用semaphore来管理异步下载请求的方法。分享给大家供大家参考。具体实现方法如下: var semaphor = new semaphor...

本文实例讲述了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#程序设计有所帮助。