The example in this article describes how C # uses semaphore to manage asynchronous download requests. Share to everyone for your reference. The implementation methods are as follows:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 The 25 26 |
var semaphor = new Semaphore (50, 50); We allow at most 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 (The new Uri (string). Format ("http://pinterest.com/pin/{0}/", pin)); for (int i = 0; i < i++) Semaphor. WaitOne (); Wait until the last thread ends. Semaphor. Dispose (); Console.WriteLine (); |
I hope this article will help you with the C # program.