कहा जा सकता है, मैं वेबक्लिएंट को फ़ाइल को असीमित रूप से डाउनलोड करने के लिए उपयोग कर रहा हूं। मैं सोच रहा हूं कि कितनी बार डाउनलोड प्रोग्रेस चेंजएंड हैंडलर को बुलाया जाता है? क्या उपयोगकर्ता इसे नियंत्रित कर सकता है?कितनी बार डाउनलोड किया जाएगा प्रोग्रेस चेंजएडहेन्ड हैंडलर को
उत्तर
निम्नलिखित पूर्ण .NET Framework पर लागू होता है, क्योंकि आपका प्रश्न ASP.NET टैग किया गया है। (सिल्वरलाइट में चीजें अलग हो सकती हैं।)
संक्षिप्त उत्तर: यह जटिल है, व्यवहार नेटवर्क प्रदर्शन विशेषताओं सहित विभिन्न चीजों पर निर्भर करता है, इसलिए यह असंगत है और आप इसे आसानी से नियंत्रित नहीं कर सकते हैं।
लांग जवाब:
घटना आम तौर पर हर बार अंतर्निहित WebResponse
द्वारा प्रदान की धारा BeginRead
आपरेशन कि WebClient
अतुल्यकालिक डाउनलोड प्रदर्शन करने के लिए उपयोग करता है के लिए पूरा होने कॉलबैक का आह्वान बढ़ा दी जाएगी।
ऐसा लगता है कि WebClient
आमतौर पर 64k हिस्सों में डेटा पढ़ने का प्रयास करेगा। हालांकि, धाराओं के रूप में पूछे जाने वाले आंकड़ों को वापस करने की आवश्यकता नहीं है - यह पूरी तरह से संभव है कि BeginRead
पर कॉल करने के लिए अनुरोध 64k से कम होगा। वास्तव में, यह उन नेटवर्कों के लिए काफी आम है जो नेटवर्क से डेटा पढ़ते हैं - वे उपलब्ध होने के तुरंत बाद डेटा की एक छोटी राशि वापस लौटने की संभावना है, सभी 64k आने तक प्रतीक्षा करने की बजाय।
तो सटीक उत्तर इस पर निर्भर करता है प्रश्न में धारा, और नेटवर्क कनेक्शन की प्रकृति और प्रदर्शन पर कुछ हद तक निर्भर हो सकती है।
WebClient
WebRequest.Create
का उपयोग करता अनुरोध/प्रतिक्रिया कार्यान्वयन है कि अंततः धारा की आपूर्ति करेगा प्राप्त करने के लिए, और कहा कि एक विस्तृत तंत्र है - नेट 5 में निर्मित WebRequest
के कार्यान्वयन है और यह एक तानाना तंत्र आप अतिरिक्त संचालकों रजिस्टर देता है कि प्रदान करता है। और यह विशिष्ट WebRequest
कार्यान्वयन है जो स्ट्रीम की प्रकृति को निर्धारित करता है।
तो जिस आवृत्ति के साथ आप प्रगति की घटनाएं प्राप्त करते हैं वह पूरी तरह से डाउनलोड के प्रकार तक है - आप किस प्रकार के यूआरएल के आधार पर अलग-अलग परिणाम प्राप्त कर सकते हैं। (उदा।, Http बनाम एफटीपी बनाम फ़ाइल, या जो भी हो।)
मैं एक जंगली अनुमान को खतरे में डाल रहा हूं कि आप HTTP का उपयोग कर रहे हैं।
फिर भी, यह बहुत जटिल है - HttpWebResponse
हमेशा उसी प्रकार की स्ट्रीम का उपयोग नहीं करता है। उदाहरण के लिए, यह कभी कभी एक धारा MemoryStream
से प्राप्त लौट सकते हैं, कभी कभी यह प्रकार ConnectStream
की है ...
तो आप किसी भी निश्चितता क्या आकार विखंडू अंतर्निहित धारा लौटने की संभावना है के साथ नहीं कह सकते क्योंकि आप भी नहीं कर सकते हैं सुनिश्चित करें कि आपको किस प्रकार की स्ट्रीम मिल सकती है।
चाहे आप इसे नियंत्रित कर सकें, एकमात्र तरीका है कि आप कस्टम यूआरएल योजना के लिए कस्टम WebRequest
कार्यान्वयन प्रदान कर सकते हैं। लेकिन स्पष्ट रूप से, यह कोड लिखने के लिए शायद सरल है जो घटनाओं की आवृत्ति को बदलने की कोशिश करने के बजाए किसी भी विशेष घटना के साथ कुछ भी करने का निर्णय लेता है या नहीं।
वैसे मेरे परीक्षण यह सुझाव देते हैं कि यह काफी हद तक अनिश्चित है।
यह घटना 828 बाइट से कम कभी नहीं बढ़ती है और ऐसा लगता है कि यह 65536 बाइट से अधिक नहीं है।
मैं एमएसडीएन से किसी भी विनिर्देश को खोदने में असमर्थ रहा हूं। उनका विवरण:
"यह घटना हर बार असीमित डाउनलोड प्रगति करता है। इस घटना को जब डाउनलोड निम्नलिखित से किसी भी विधि का उपयोग शुरू कर रहे हैं इस प्रकार उठाया है "
कोड का प्रयोग किया:।
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim client As New WebClient
AddHandler client.DownloadFileCompleted, AddressOf DownloadFileCompleted
AddHandler client.DownloadProgressChanged, AddressOf DownloadProgressCallback
Dim uri As New Uri("http://ftp.iinet.net.au/test500MB.dat", UriKind.Absolute)
client.DownloadFileAsync(uri, "test500MB.dat")
End Sub
Sub DownloadProgressCallback(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
Debug.Print("{0} downloaded {1} of {2} bytes. {3} % complete... Difference: {4}", _
CStr(e.UserState), e.BytesReceived, e.TotalBytesToReceive, e.ProgressPercentage, CLng(e.BytesReceived - m_LastValue))
m_LastValue = e.BytesReceived
End Sub
आउटपुट:
downloaded 27416820 of 500000000 bytes. 5 % complete... Difference: 36712
downloaded 27482356 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27483184 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 27548720 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27550960 of 500000000 bytes. 5 % complete... Difference: 2240
downloaded 27586260 of 500000000 bytes. 5 % complete... Difference: 35300
downloaded 27651796 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27652624 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 27718160 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27718988 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 27755700 of 500000000 bytes. 5 % complete... Difference: 36712
downloaded 27821236 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27822064 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 27887600 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27888428 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 27925140 of 500000000 bytes. 5 % complete... Difference: 36712
downloaded 27990676 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 27991504 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 28057040 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 28057868 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 28094580 of 500000000 bytes. 5 % complete... Difference: 36712
downloaded 28160116 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 28160944 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 28226480 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 28227308 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 28264020 of 500000000 bytes. 5 % complete... Difference: 36712
downloaded 28329556 of 500000000 bytes. 5 % complete... Difference: 65536
downloaded 28330384 of 500000000 bytes. 5 % complete... Difference: 828
downloaded 28395920 of 500000000 bytes. 5 % complete... Difference: 65536
10 एमबी फ़ाइल आउटपुट इसमें परिवर्तन:
downloaded 307533 of 10000000 bytes. 3 % complete... Difference: 28240
downloaded 369661 of 10000000 bytes. 3 % complete... Difference: 62128
downloaded 431789 of 10000000 bytes. 4 % complete... Difference: 62128
downloaded 497325 of 10000000 bytes. 4 % complete... Difference: 65536
downloaded 498153 of 10000000 bytes. 4 % complete... Difference: 828
downloaded 553221 of 10000000 bytes. 5 % complete... Difference: 55068
downloaded 618757 of 10000000 bytes. 6 % complete... Difference: 65536
downloaded 619585 of 10000000 bytes. 6 % complete... Difference: 828
downloaded 649237 of 10000000 bytes. 6 % complete... Difference: 29652
downloaded 714773 of 10000000 bytes. 7 % complete... Difference: 65536
downloaded 715601 of 10000000 bytes. 7 % complete... Difference: 828
downloaded 748077 of 10000000 bytes. 7 % complete... Difference: 32476
downloaded 813613 of 10000000 bytes. 8 % complete... Difference: 65536
downloaded 814441 of 10000000 bytes. 8 % complete... Difference: 828
downloaded 866685 of 10000000 bytes. 8 % complete... Difference: 52244
downloaded 932221 of 10000000 bytes. 9 % complete... Difference: 65536
downloaded 933049 of 10000000 bytes. 9 % complete... Difference: 828
downloaded 982469 of 10000000 bytes. 9 % complete... Difference: 49420
downloaded 1048005 of 10000000 bytes. 10 % complete... Difference: 65536
downloaded 1048833 of 10000000 bytes. 10 % complete... Difference: 828
downloaded 1114369 of 10000000 bytes. 11 % complete... Difference: 65536
downloaded 1115197 of 10000000 bytes. 11 % complete... Difference: 828
- 1. कस्टम प्रोग्रेस बार?
- 2. लूप के लिए इसमें कितनी बार स्ट्रेलन() कहा जाएगा?
- 3. प्रोग्रेस बार और फ़ाइल लोडिंग
- 4. बेसिक इंडेटर्मिनेट जेपी प्रोग्रेस बार उपयोग
- 5. मैं आईफोन एचयूडी प्रोग्रेस बार
- 6. टीसीपी कितनी बार
- 7. कोड समीक्षाओं को कितनी बार किया जाना चाहिए?
- 8. xhr.upload.on प्रगति आग कितनी बार करता है?
- 9. देखें कि मेरा मुफ्त आईफोन ऐप कितनी बार डाउनलोड किया गया है
- 10. मैल्सअप की jQuery फ़ाइल अपलोड प्रोग्रेस बार
- 11. बूटस्ट्रैप पेज लोड प्रोग्रेस बार एनीमेशन
- 12. संकलक संकलित - कितनी बार?
- 13. कितनी जल्दी jQuery (दस्तावेज़) .ready कहा जाएगा?
- 14. प्रोग्रेस
- 15. जावा में प्रोग्रेस बार का उपयोग कैसे करें (नेटबीन्स जीयूआई)
- 16. कार्यक्रम कितनी बार चलाया गया है? सी #
- 17. HttpModule EndRequest हैंडलर को दो बार
- 18. एपीएनएस प्रतिक्रिया कितनी बार जांचें?
- 19. iScroll आइटम को क्लिक नहीं किया जाएगा
- 20. कारण क्यों ASP.NET AJAX अक्षम किया जाएगा
- 21. एक विनाशक को एक सूचक के साथ घोषित किया जाएगा या नहीं घोषित किया जाएगा? सी ++
- 22. आप कितनी बार SQL सीई डेटाबेस को कॉम्पैक्ट करना चाहिए?
- 23. माउस को रोकने/छोड़ने के लिए कितनी बार
- 24. ACTION_OUTSIDE कब ट्रिगर किया जाएगा?
- 25. प्रोग्रेस बार ऑपरेशन के दौरान अद्यतन नहीं कर रहा है
- 26. NSUserDefaults कितनी बार सिंक्रनाइज़ होते हैं?
- 27. लॉगिंग मॉड्यूल के माध्यम से पाइथन प्रोग्रेस बार
- 28. विनफॉर्म प्रोग्रेस बार अपडेट नहीं करता है (सी #)
- 29. सेगमेंट प्रोग्रेस बार बनाने का सबसे अच्छा तरीका?
- 30. डीबी में शून्य मूल्य से कितनी मेमोरी पर कब्जा किया जाएगा?
पीएस: बस ध्यान दिया कि यह एक सी # प्रश्न था ... वीबी कोड के लिए मुझे मत मारो :-) –