2011-06-07 11 views
5

मुझे एक समय अवधि में स्विंग अंतराल पर परीक्षण डेटा फ़ीड करने की आवश्यकता है। डेटा सेट पार्स करने में लंबा है, इसलिए मैं पृष्ठभूमि में इसे पार्स करने के लिए SwingWorker का उपयोग कर रहा हूं। जब जीयूआई (डेटा, प्रति सेकंड एक आइटम) को डेटा खाने की बात आती है, तो मैं SwingWorker से Timer शुरू कर सकता हूं, लेकिन यह ओवरकिल लगता है। SwingWorker के भीतर से सोने के लिए कोई कारण नहीं है?एक स्विंगवर्कर में सो रहा है?

चीयर्स

+1

मुझे लगता है कि आप स्विंगवर्कर के अंदर सो सकते हैं (आपके पास अपना धागा है, इसलिए आप इस धागे में सो सकते हैं) - मुझे कोई समस्या नहीं दिख रही है। –

उत्तर

4

SwingWorker के बाद से EDT पर नहीं चलता है, के भीतर सो बिल्कुल ठीक है।

SwingWorker स्थितियों जहाँ आप एक पृष्ठभूमि धागा में एक लंबा चल कार्य चलाने के लिए और या तो जब कर लें, या जबकि प्रसंस्करण यूआई के लिए अद्यतन प्रदान की जरूरत के लिए बनाया गया है।

मेरी राय में, एक Timer एक SwingWorker के अलावा overkill होगा। इसके बजाय, अनियमित अंतराल पर भी, जब भी संभव हो, पार्स किए गए परीक्षण डेटा को प्रकाशित करें।

3

जब आप स्विंगवर्कर को सोते हैं तो यह डेटा लोड नहीं करेगा। यदि यह वांछित है तो यह दृष्टिकोण ठीक है।

यदि आप डेटा लोड करना चाहते हैं और केवल जीयूआई को भोजन को गति देना चाहते हैं तो ऐसा लगता है कि एक बेहतर डिज़ाइन जीयूआई में टाइमर शुरू करना होगा जो एक अंतराल पर कार्यकर्ता से नए डेटा को जांच और खींच देगा, invokeLater बनाने वाले कार्यकर्ता के बजाय जीयूआई को वापस कॉल करें।

+0

बाहर से सहमत हो गया, क्योंकि कुछ भी गारंटी नहीं है कि स्विंगवर्कर अगले कार्य से पहले समाप्त होता है (किसी भी) टाइमर +1 – mKorbel

संबंधित मुद्दे