तो, कुछ मुझे C # 5 में नए async समर्थन के बारे में बता रहा है:
उपयोगकर्ता एक बटन दबाता है जो एक async ऑपरेशन शुरू करता है। कॉल तुरंत वापस आ जाता है और संदेश पंप फिर से चलने लगता है - यही पूरा बिंदु है।
तो उपयोगकर्ता फिर से बटन दबा सकता है - फिर से प्रवेश कर सकता है। क्या होगा अगर यह एक समस्या है?
जिन डेमो में मैंने देखा है, वे await
कॉल से पहले बटन को अक्षम करते हैं और बाद में फिर से सक्षम करते हैं। यह मुझे एक वास्तविक दुनिया में एक बहुत ही नाजुक समाधान की तरह लगता है।
क्या हमें किसी प्रकार की राज्य मशीन को कोडित करना चाहिए जो निर्दिष्ट संचालन के दिए गए सेट के लिए कौन से नियंत्रण को अक्षम करना चाहिए? या कोई बेहतर तरीका है?
मुझे ऑपरेशन की अवधि के लिए सिर्फ एक मामूली संवाद दिखाने के लिए लुभाया जाता है, लेकिन यह एक स्लेजहैमर का उपयोग करने जैसा लगता है।
किसी को कोई उज्ज्वल विचार मिला, कृपया?
संपादित करें:
मुझे लगता है कि किसी ऑपरेशन को चलाने के दौरान उपयोग किए जाने वाले नियंत्रणों को निष्क्रिय नहीं करना चाहिए क्योंकि यह मुझे लगता है कि यह जल्दी से जटिल हो जाएगा जब आपके पास इस पर कई नियंत्रणों के साथ एक विंडो होगी। मैं चीजों को सरल रखना पसंद करता हूं क्योंकि यह कीड़े की संभावना को कम करता है, दोनों प्रारंभिक कोडिंग और बाद के रखरखाव के दौरान।
क्या होगा अगर नियंत्रण का एक संग्रह है जिसे किसी विशेष ऑपरेशन के लिए अक्षम किया जाना चाहिए? और क्या होगा अगर कई ऑपरेशन समवर्ती चल रहे हैं?