java - How can I get my basic SWT application to exit properly in Mac OS X 10.5.6? -


मेरे पास निम्न SWT परीक्षण कोड है:

  सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {shell = नया शैल (); Shell.setText (APP_NAME + "+ APP_VERSION); सार्वजनिक शून्य रहित सक्रिय (शेलइवेंट इवेंट) {} सार्वजनिक शून्य शेल-क्लॉज्ड (शैलइवेंट इवेंट) {exit ();} सार्वजनिक शून्य का शेल निष्क्रिय (शैलइवेंट इवेंट) {} सार्वजनिक शून्य से खोल डीईसीओसीएनाइएटेड (शैलइवेंट इवेंट) {} सार्वजनिक शून्य शैलिकीकृत (शैलइवेंट इवेंट) {}}); shell.open (); Display = shell.getDisplay (); जबकि {if (display.readAndDispatch ()!) {display.sleep () (shell.isDisposed ()!); }} Display.dispose (); }  

मेरी निकास () विधि इस प्रकार है:

  निजी शून्य से बाहर निकलें () {System.exit (0); }  

मैं शेल ("विंडो") को बंद करके या अनुप्रयोग मेनू को नीचे खींचकर ("SWT" लेबल किया गया) और "छोड़ो" का चयन करके एप्लिकेशन को छोड़ने का प्रयास करता हूं।

जब मैं ऐसा करता हूं, डॉक में एक SWT स्टब पीछे रहता है और SWT अनुप्रयोग वास्तव में बाहर नहीं निकलता है। मुझे मैन्युअल रूप से एसडब्ल्यूटी अनुप्रयोग को ग्रहण या फोर्स छोड़ने के माध्यम से समाप्त करना है।

मैंने इसे v3.4 और v3.5 SWT जार के साथ, मैक ओएस एक्स 10.5.6 के तहत ईक्लेप्से 3.4.1 के नीचे की कोशिश की है। (इंटेल)।

क्या मैं शेल को बंद करने पर आवेदन छोड़ने में सक्षम होने के लिए अतिरिक्त काम करना चाहता हूं?

आप मूल संसाधनों को ठीक से रिलीज़ नहीं कर रहे हैं - आपके पास एक संसाधन रिसाव है।

आपको ऐसा करने की आवश्यकता नहीं है:

 < कोड> निजी शून्य से बाहर निकलें () {System.exit (0); }  

शेल का निपटान करने से मुख्य विधि बाहर निकल जाएगी। यदि आप चाहिए एक निकास विधि का उपयोग करें, तो उसे सभी SWT संसाधनों का निपटान करने के बाद कहें:

  प्रदर्शन प्रदर्शन = नया प्रदर्शन (); {शैल शेल = नया शैल (डिस्प्ले) प्रयास करें; {Shell.open () का प्रयास करें; जबकि (! Shell.isDisposed ()) {if (! Display.readAndDispatch ()) {display.sleep (); }}} अंत में {यदि (! Shell.isDisposed ()) {shell.dispose (); }}} अंत में {display.dispose (); } System.exit (0);  

Comments