2011-08-12 13 views
5

में दिखाएं मैं एक ही यूआई में कई अनुक्रमिक नौकरियां कैसे प्रदर्शित कर सकता हूं?कतार अनुक्रमिक UI नौकरियां और उन्हें यूआई

मेरे उपयोग मामला है के बाद एक:

  1. उपयोगकर्ता कार्रवाई
  2. प्रारंभ पहली नौकरी (अज्ञात लंबाई) पहली नौकरी के लिए
  3. प्रतीक्षा समाप्त करने और दूसरी नौकरी (ज्ञात लंबाई)
  4. शुरू करने के लिए दूसरी नौकरी खत्म करने और तीसरी नौकरी शुरू करने के लिए प्रतीक्षा करें (ज्ञात लंबाई)

मैं इसे निम्न तरीके से उपयोगकर्ता को दिखाना चाहता हूं:

  1. (1 काम की वजह से अज्ञात और वास्तव में फांसी की लंबाई पर चर मैं एक सटीक कुल लंबाई नहीं मिल सकता है) एक मुख्य "उपयोगकर्ता क्रिया" वैश्विक प्रगति बार बिना संवाद है
  2. इस संवाद में 3 उप है इस नौकरी में से प्रत्येक के लिए एक प्रगति पट्टी के साथ प्रत्येक नौकरी के लिए एक भाग और पहले नौकरी के लिए IProgressMonitor.UNKNOWN शैली के साथ पाठ्यक्रम।
  3. इस संवाद में प्रगति पट्टी अनुक्रमिक रूप से अंतर्निहित नौकरियों के रूप में अपडेट की जाएगी।

यह अंतिम उपयोगकर्ता को तुरंत यह देखने की अनुमति देगा कि इसकी क्रिया 3 उप-कार्यों में विभाजित है (उप-कार्य अंतिम उपयोगकर्ताओं के लिए सार्थक हैं) और हर बार जब कोई नया उप-कार्य शुरू होता है तो वह देख सकता है इस उप-कार्य की लंबाई (पहले के लिए अज्ञात अज्ञात)।

कई खोजों के बाद मैं इसे लागू करने में सक्षम नहीं था, और आज मैं इन 3 उप-कार्यों को 3 व्यक्तिगत लगातार संवाद के रूप में रिपोर्ट कर रहा हूं, जो अंतिम उपयोगकर्ता प्रारंभ में सोच सकता है कि उसकी कार्रवाई समाप्त हो जाएगी पहला अज्ञात उप-कार्य।

उत्तर

2

क्या आप अपनी नौकरी के निष्पादन के आदेश को नियंत्रित करने के लिए अपने स्वयं के शेड्यूलिंग नियमों को लागू नहीं कर सकते हैं, और पहले नौकरी को प्रभावी ढंग से निष्पादित करते समय दूसरी नौकरी को प्रभावी ढंग से अवरुद्ध कर सकते हैं, और तीसरा दूसरा चल रहा है?

विवरण और कोड स्निपेट के लिए http://www.eclipse.org/articles/Article-Concurrency/jobs-api.html पर देखें।

किसी भी समय एक शेड्यूलिंग नियम का अधिग्रहण किया है, कि धागे के निष्पादन अवरुद्ध किया जा सकता है जब तक शासन प्राप्त किया जा सकता:

उपरोक्त लेख से

। इन स्थितियों में, उपयोगकर्ता को एक संवाद देखने से लाभ होगा जो चल रहे कार्य के लिए प्रगति दिखाता है और यदि कार्य किसी अन्य कार्य द्वारा अवरुद्ध किया जाता है तो प्रतिक्रिया प्रदान करता है।

जबकि मैंने इसे स्वयं लागू नहीं किया है, मैंने इसे ग्रहण में देखा है। जब वर्कबेंच अपने राज्य को बचा रहा है, जबकि एक परियोजना अभी भी निर्माण कर रही है, उदाहरण के लिए, ग्रहण निर्माण पर प्रगति की रिपोर्ट कर रहा है, जबकि निर्माण जारी होने तक राज्य दृढ़ता नौकरी को अवरुद्ध कर रहा है। यह नौकरियों को एक ही संवाद में अलग-अलग प्रविष्टियों के रूप में प्रदर्शित करता है, और यह स्पष्ट करता है कि दूसरा काम पहले से अवरुद्ध है।

+0

उत्तर के लिए धन्यवाद। मैंने अभी नौकरी के बीच शेड्यूलिंग नियम जोड़ने की कोशिश की लेकिन दुर्भाग्यवश यह एक ही संवाद में दिखाई नहीं दे रहा है। यदि सभी नौकरियों पर सेटसर (सत्य) कहा जाता है तो मेरे पास कई संवाद होते हैं और यदि केवल पहली नौकरी पर फोन किया जाता है तो मेरे पास मेरी सभी नौकरियों के साथ एक संवाद होता है लेकिन जैसे ही पहली नौकरी समाप्त हो जाती है, यह बंद हो जाती है –

+0

क्या आप नौकरियों के दृश्य का उपयोग नहीं कर सकते व्यक्तिगत प्रगति संवाद के बजाय? यदि आवश्यक हो तो दृश्य को होस्ट करने के लिए आप अपने स्वयं के संवाद को भी कार्यान्वित कर सकते हैं। इस पर एक नज़र डालें - http://www.richclient2.de/2006_09_28/using-the-eclipse-jobs-api/ नौकरियों को शेड्यूल करने के लिए, और यह - http://wiki.eclipse.org/FAQ_How_do_I_prevent_two_jobs_from_running_at_the_same_time%3F के लिए शेड्यूलिंग नियम। –

+0

यह भी मदद कर सकता है - http://wiki.eclipse.org/FAQ_How_do_I_switch_from_using_a_Progress_dialog_to_the_Progress_view%3F क्षमा करें, इसे ऊपर मेरी टिप्पणी में जोड़ने के लिए भूल गए। –

0

क्यों न केवल एक प्रक्रिया बार को तीन हिस्सों में विभाजित करें। पहली नौकरी के लिए पहला तीसरा, फिर दूसरा और तीसरा।

वैसे भी यह आसान है! :)

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