मैं निम्नलिखित कोड है कहते हैं:मैं स्विंगवर्कर की doInBackground() विधि की प्रतीक्षा कैसे करूं?
import java.lang.InterruptedException;
import javax.swing.SwingWorker;
public class Test
{
private JDialog window;
public Test
{
// instantiate window
}
private class Task extends SwingWorker<Void, Void>
{
public Void doInBackground()
{
try { Thread.currentThread().sleep(5000); }
catch(InterruptedException e) {}
return null;
}
}
public void doTask()
{
Task task = new Task();
task.execute();
}
protected void process()
{
// update various GUI components here
}
public static void main(String args[])
{
Test t = new Test();
t.doTask();
System.out.println("done");
}
}
मैं t.doTask()
तक इंतजार करने की जरूरत है बाहर मुद्रण 'पूर्ण' से पहले किया जाता है, लेकिन मैं वास्तव में कैसे यकीन नहीं है। मैं जानता हूँ कि मैं शायद join()
यहाँ का उपयोग करना चाहिए, लेकिन मैं उस पर कॉल करने के लिए एक धागा जरूरत है, और मैं कैसे से जहाँ मैं join()
कॉल करने की आवश्यकता doInBackground()
की धागा प्राप्त करने के लिए पता नहीं है। किसी भी मदद के लिए धन्यवाद।
संपादित करें: प्रतिक्रियाओं के लिए धन्यवाद। दुर्भाग्यवश, get()
और इस तरह की समस्या को हल नहीं करते हैं। मेरे वास्तविक कोड में, स्विंगवर्कर के पास ओवरराइड process()
फ़ंक्शन है जो पृष्ठभूमि थ्रेड चल रहा है, जबकि एक GUI विंडो अद्यतन करता है। get()
doInBackground
के बाद तक मुद्रित किया जा रहा से 'पूर्ण' रोक है, लेकिन उसके बाद जीयूआई अपडेट नहीं होता। मैंने इसे प्रतिबिंबित करने के लिए अपना नमूना कोड अपडेट किया, हालांकि अब यह संकलित नहीं होगा।
वहाँ मुद्रित करने के लिए केवल एक बार doInBackground
समाप्त हो गया है करने के लिए मिलता है 'पूर्ण' कोई तरीका है? क्या एक ही थ्रेड पर जीयूआई अपडेट कोड और 'किया गया' कथन है? क्या मुझे एक नया धागा बनाने की ज़रूरत है?
ठीक है, मैं यह 'का उपयोग किया काम कर मिल गया()'। आपकी सहायता के लिए धन्यवाद. – Max
भावी googlers के लिए नोट: स्विंगवर्कर रद्द कर दिया गया है जब यह वास्तव में मदद नहीं करता है। 'किया गया()' 'InInBackground() 'पूरा होने से पहले चलाया जा सकता है। :-(http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6826514 http: // stackoverflow।कॉम/प्रश्न/6204141/स्विंगवर्कर-कब-बिल्कुल-कहा जाता है-विधि-विधि – kmort