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