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

 更新时间:2015年06月05日 15:56:19   作者:不吃皮蛋  
这篇文章主要介绍了C#使用semaphore来管理异步下载请求的方法,涉及C#使用semaphore实现多线程管理的技巧,需要的朋友可以参考下

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

相关文章

  • 基于C#实现Word加盖的骑缝章效果

    基于C#实现Word加盖的骑缝章效果

    这篇文章主要为大家详细介绍了如何使用C#实现Word加盖的骑缝章效果,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
    2024-01-01
  • 基于C#实现宿舍管理系统

    基于C#实现宿舍管理系统

    这篇文章主要介绍了如何利用C#语言开发一个简易的宿舍管理系统,文中的实现步骤讲解详细,对我们学习C#有一定参考价值,感兴趣的可以了解一下
    2022-06-06
  • C#8.0 中开启默认接口实现方法

    C#8.0 中开启默认接口实现方法

    这篇文章主要介绍了C#8.0 中开启默认接口实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧的相关资料
    2019-05-05
  • .net4.5使用async和await异步编程实例

    .net4.5使用async和await异步编程实例

    .net4.5使用async和await异步编程实例,大家参考使用吧
    2013-12-12
  • C#原型模式之如何通过克隆对象来优化创建过程

    C#原型模式之如何通过克隆对象来优化创建过程

    原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初始化的场景,本文介绍C#原型模式之如何通过克隆对象来优化创建过程,感兴趣的朋友一起看看吧
    2025-03-03
  • c# 在windows中操作IIS设置FTP服务器的示例

    c# 在windows中操作IIS设置FTP服务器的示例

    这篇文章主要介绍了c# 在windows中操作IIS设置FTP服务器的示例,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#中多态、重载、重写区别分析

    C#中多态、重载、重写区别分析

    这篇文章主要介绍了C#中多态、重载、重写区别,采用实例较为通俗易懂的分析了多态、重载的重写的概念与用法,对于C#初学者有非常不错的借鉴价值,需要的朋友可以参考下
    2014-09-09
  • C#实现GZip压缩和解压缩入门实例

    C#实现GZip压缩和解压缩入门实例

    C#中用GZip对数据压缩和解压缩非常方便,但是当我第一次拿到这个类的时候却感觉很迷茫,无从下手
    2014-04-04
  • C# 实现Table的Merge,Copy和Clone

    C# 实现Table的Merge,Copy和Clone

    这篇文章主要介绍了C# 实现Table的Merge,Copy和Clone,帮助大家更好的利用c#处理文件,感兴趣的朋友可以了解下
    2020-12-12
  • C#中时间类的使用方法详解

    C#中时间类的使用方法详解

    这篇文章主要介绍C#中的时间类,文中主要介绍了DateTime类,TimeSpan类,DateTimeOffset类及静态类的封装,通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-05-05

最新评论