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

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

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

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#程序设计有所帮助。

时间: 2024-08-03 09:00:37

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

Ajax请求二进制流进行处理(ajax异步下载文件)的简单方法

摘要: ajax请求一个二进制流(文件),转换为Blob进行处理或者下载保存文件 需求 管理后台需要随时下载数据报表,数据要实时生成后转换为excel下载. 文件不大,页面放置"导出"按钮,点击按钮后弹出保存文件对话框保存 说明:第一种方法使用a标签直接可以满足大部分人需求,第二种方法纯粹是在说实现方法以及更好的操作体验,不需要(举一个需要第二种方法的例子:如果生成很慢就需要生成过程中禁用按钮,防止连续生成)用到的可以不用看 解决方案 方法一 请求文件的接口能改为GET则可以使用这种方

Android异步下载网络图片

项目中有时候需要获取网络上的图片,并下载下来到手机客户端显示.怎么做呢? 实现思路是:  1:在UI线程中启动一个线程,让这个线程去下载图片.  2:图片完成下载后发送一个消息去通知UI线程  2:UI线程获取到消息后,更新UI.  这里的UI线程就是主线程.  这两个步骤涉及到一些知识点,即是:ProgressDialog,Handler,Thread/Runnable,URL,HttpURLConnection等等一系列东东的使用.  现在让我们开始来实现这个功能吧!  第一步:新建项

Android Asynchronous Http Client-Android异步网络请求客户端接口

1.简介Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是基于Apache's HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android  Handler message 机制传递信息. 2.特性(1)采用异步http请求,并通过匿名内部类处理回调结果

iOS异步下载图片实例代码_IOS

写在前面 在iOS开发中,无论是在UITableView还是在UICollectionView中,通过网络获取图片设置到cell上是较为常见的需求.尽管有很多现存的第三方库可以将下载和缓存功能都封装好了供开发者使用,但从学习的角度出发,看懂源码,理解其中的原理,结合自身的实际需求写出自己的代码是很必要的.在刚结束的Demo中,有用到异步图片下载功能,这篇笔记就是对整个实现的简单整理. 基本思路 •cell中添加一个UIImageView •cell拥有url,发起下载请求,注册下次完成通告,在通

chrome-谷歌浏览器,ajax发送下载请求速度是否有限制?

问题描述 谷歌浏览器,ajax发送下载请求速度是否有限制? 如图,getFile方法请求下载266Mb的文件(部署在本地IIS上的网站下载本地文件)耗时22秒左右,大概下载速度为12Mb/s,为何本地文件下载还这么慢,求问有什么方法可以提高本地或者局域网的文件下载速度呢? 解决方案 你的网卡如果是100M的网卡,那么理论最高速度是12.5MB/s(100 / 8=12.5)另外,如果你使用的是机械硬盘,那么理论最高传输率应该相当于机械硬盘传输率的1/2还要低,不过现代机械硬盘的持续传输率可以超过

[翻译] LASIImageView - 显示进度指示并异步下载图片

  LASIImageView – download image with progress indicator 翻译原网址:http://lukagabric.com/lasiimageview-download-image-with-progress-indicator/#more-797 LASIImageView is a UIImageView subclass that supports asynchronous image download with different progr

使用开源库 SDWebImage 异步下载缓存图片(持续更新)

source  https://github.com/rs/SDWebImage APIdoc  http://hackemist.com/SDWebImage/doc Asynchronous image downloader with cache support with an UIImageView category UIImageView的类目,支持异步图片下载,支持缓存机制 This library provides a category for UIImageVIew with su

Android中使用DownloadManager类来管理数据下载的教程

从Android 2.3(API level 9)开始Android用系统服务(Service)的方式提供了Download Manager来优化处理长时间的下载操作.Download Manager处理HTTP连接并监控连接中的状态变化以及系统重启来确保每一个下载任务顺利完成. 在大多数涉及到下载的情况中使用Download Manager都是不错的选择,特别是当用户切换不同的应用以后下载需要在后台继续进行,以及当下载任务顺利完成非常重要的情况(DownloadManager对于断点续传功能支

iOS 异步网络请求 和 把 同步网络请求放在子线程有什么区别?

问题描述 iOS 异步网络请求 和 把 同步网络请求放在子线程有什么区别? iOS 异步网络请求 和 把 同步网络请求放在子线程有什么区别? 解决方案 那就是异步和同步的问题咯,,异步的话是不会等待请求完成能继续执行下面的程序,,而同步会等待请求的完成,在继续执行下面的 解决方案二: 同步放子线程效果跟异步达到的类似.只是一个是API原生支持,一个是你自己代码来实现 解决方案三: 同步放子线程效果跟异步达到的类似.只是一个是API原生支持,一个是你自己代码来实现 解决方案四: 同步放子线程效果跟