अधिकांश जावा प्रोग्रामर जानते हैं कि स्विंग जीयूआई के अपडेट केवल एडब्ल्यूटी ईवेंट प्रेषण धागे पर ही किए जाने चाहिए और सिफारिश यह है कि लंबे समय से चलने वाली प्रक्रियाओं को "कार्यकर्ता" धागे पर निष्पादित किया जाना चाहिए, SwingUtilities.invokeAndWait()
या SwingUtilities.invokeLater()
का उपयोग कर थ्रेड प्रेषण धागे को भेजे गए अपडेट के साथ।वर्किंग थ्रेड में जावा स्विंग उपयोगकर्ता को अवरुद्ध करने के लिए पैटर्न
लंबी अवधि की प्रक्रिया पूरी होने पर उपयोगकर्ता को एप्लिकेशन के साथ आगे बढ़ने से कैसे रोकें? क्या आप नियंत्रण को भूरे रंग से बाहर करते हैं और फिर ऊपर वर्णित SwingUtilities
कॉल का उपयोग करके कार्यकर्ता धागा को पुन: सक्षम करते हैं?
क्या कोई बेहतर वैकल्पिक पैटर्न है?
उपयोगकर्ता को एप्लिकेशन का उपयोग करने से आपको प्रतिबंधित करने की आवश्यकता क्यों है?यदि संभव हो तो आप ऐसा करने से बचना चाहते हैं और उन्हें जारी रखने की अनुमति देते हैं। यदि आपको बिल्कुल एक मोडल संवाद के बारे में क्या करना है? आप नियंत्रण भी अक्षम कर सकते हैं। – justkt
अच्छा सवाल। मुझे प्रोग्रेस मॉनिटर को छोड़कर कोई मानक जवाब नहीं पता है। – keuleJ
@justkt: यदि लंबी चलती प्रक्रिया उस चीज़ को प्रभावित करती है जो दिखा रहा है, तो शायद मैं ऑपरेशन को रद्द करने के अलावा उपयोगकर्ता को कुछ और नहीं करना चाहूंगा। आमतौर पर मैं "रद्द करें" बटन को छोड़कर बटन, इत्यादि के साथ एक मोडल संवाद करता हूं, लेकिन मैं एक और सामान्य पैटर्न की उम्मीद कर रहा हूं। – Ralph