रिपोर्ट करने के लिए, यहIProgress <T> कितनी बार प्रगति
- कोड एक आवृत्ति है कि "उचित" है करने के लिए अपनी प्रगति रिपोर्ट को सीमित करने के रिपोर्टिंग प्रगति की जिम्मेदारी होनी चाहिए, -या-
IProgress<T>
के विशिष्ट कार्यान्वयन की ज़िम्मेदारी यह जानकर कि प्रगति की रिपोर्टिंग उच्च आवृत्ति पर हो सकती है, जिस तरह से यह प्रगति पेश करेगा।
प्रश्न का संदर्भ है कि मेरे पास कुछ कोड है जो प्रगति की रिपोर्ट करने के लिए IProgress<T>
का उपयोग करता है, और यह बहुत उच्च दर पर प्रगति की रिपोर्ट करता है। मैं यूआई प्रगति पट्टी के साथ प्रगति प्रदर्शित करना चाहता हूं। यदि मैं प्रदत्त Progress<T>
कार्यान्वयन (जो पोस्ट यूआई सिंक्रनाइज़ेशन कॉन्टेक्स्ट में प्रगति करता है) का उपयोग करता है, तो यह यूआई को उत्तरदायी नहीं होने का कारण बनता है (यानी संदेश कतार में भेजे गए बहुत से संदेश हैं, कि उपयोगकर्ता "रद्द करें" पर भी क्लिक नहीं कर सकता संवाद पर बटन)।
तो,
- मैं कम रिपोर्टिंग करके इसे ठीक कर सकता है, लेकिन क्या हुआ अगर मैं एक
IProgress<T>
कार्यान्वयन कि सिर्फ प्रगति लिखा एक लॉग फ़ाइल के लिए (और उच्च आवृत्ति रिपोर्टिंग संभाल सकता) था। -या- - मैं अपना खुद का विशिष्ट
IProgress<T>
कार्यान्वयन बनाकर इसे ठीक कर सकता हूं जो सीमित है कि मैंने कितनी बार प्रक्रिया को संसाधित/रिपोर्ट किया था। संभवतः, यह कार्यान्वयन गैर-यूआई थ्रेड पर नवीनतम प्रगति रिकॉर्ड करेगा, और फिर (शायद) यूआई टाइमर के आधार पर अपडेट किया जाएगा।
दिलचस्प सवाल, लेकिन शायद ऑफ-विषय? मेरा व्यक्तिगत दृष्टिकोण: उत्पादक जो कुछ देता है, उसे सर्वोत्तम बनाने के लिए उपभोक्ता पर निर्भर करता है। तो आउटपुट +1 की कोई सीमा नहीं है। संपादित करें: ठीक है, अगर निर्माता प्रदर्शन कारणों से खुद को सीमित करता है, तो यह एक अच्छा कारण हो सकता है। – igrimpe
एक प्रगति पट्टी आमतौर पर एक पूर्णांक मान 0..100 लेता है। यदि आप अपडेट हैं तो अगले पूर्णांक पर नहीं जाते हैं तो यूआई को इसकी रिपोर्ट करने का कोई कारण नहीं है। लेकिन मुझे दिलचस्पी है कि विशेषज्ञ क्या कहते हैं – Harrison
@ हैरिसन, मैं कहूंगा कि प्रगति आम तौर पर इस तरह से रिपोर्ट की जाती है जो प्रगति की रिपोर्ट करने वाले कोड को समझ में आता है। प्रगति का उपभोक्ता यह बदलने के लिए ज़िम्मेदार है कि वे इसे कैसे पेश करना चाहते हैं (उदाहरण के लिए एक प्रतिशत पूर्ण)। –