C#使用semaphore來管理異步下載請(qǐng)求的方法
本文實(shí)例講述了C#使用semaphore來管理異步下載請(qǐng)求的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
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();
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#備忘錄模式(Memento Pattern)實(shí)例教程
這篇文章主要介紹了C#備忘錄模式(Memento Pattern),以一個(gè)支持回退操作的例子講述了C#備忘模式的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-09-09

C#實(shí)現(xiàn)數(shù)據(jù)包加密與解密實(shí)例詳解

C#使用post發(fā)送和接收數(shù)據(jù)的方法

winform壁紙工具為圖片添加當(dāng)前月的日歷信息

C#通過PInvoke調(diào)用c++函數(shù)的備忘錄的實(shí)例詳解

Unity接入百度AI實(shí)現(xiàn)果蔬識(shí)別