मैं एक सर्वर से कुछ फ़ाइलों को डाउनलोड करने के लिए WebClient
की DownloadFileAsync
विधि का उपयोग कर रहा है, और मैं मदद नहीं कर सकता लेकिन लगता है कि VS2010 भीतर मेरे कोड की मेरी अनौपचारिक परीक्षण में, इसके बारे में 3 सेकंड के लिए ब्लॉक, जबकि यह शुरू होता है, जो, मेरी राय में इस तरह के उद्देश्य को पहले स्थान पर हराया जाता है।WebClient.DownloadFileAsync वास्तव में इस धीमी गति से है?
WebClient downloader = new WebClient();
downloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(updateDownloadProgress);
downloader.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(downloadCompleted);
var current_map = map_downloads[0];//string with filename, map_downloads is List<string>
var path = System.IO.Path.GetTempFileName();
downloaded_maps.Add(path);//adding the temp file to a List<string>
downloader.DownloadFileAsync(new Uri(MAP_BASE + current_map), path); //MAP_BASE is a string containing the base url
मैं DownloadFileAsync
उपयोग कर रहा हूँ को अवरुद्ध करने से यूआई रखने के लिए, जबकि आवेदन एक ~ 100 एमबी फ़ाइल डाउनलोड करता है:
यहाँ कोड के प्रासंगिक टुकड़ा है। जाहिर है अगर 3 सेकंड के लिए यूआई ब्लॉक, जबकि कॉल शुरू होता है, कि कुछ हद तक उपयोगिता कम हो, अगर पूरी तरह से नहीं।
मैं सी #/नेट के साथ तुलनात्मक रूप से अनुभवहीन हूं (मैंने 3-4 साल पहले आईईटी 2.0 सामान का एक समूह किया था, आईआईआरसी, लेकिन मैं मूल रूप से इसे अभी जारी कर रहा हूं)।
धन्यवाद, कि पूरी तरह से काम किया! एक ही समस्या का सामना करने वाले लोगों के लिए, बस डाउनलोड करने से पहले वेब क्लाइंट की 'प्रॉक्सी' प्रॉपर्टी को शून्य पर सेट करें। – Zoey