मुझे एक NSOperationQueue में डाला गया एक चल रहा NSOperation रोकना होगा। वर्तमान में मैं सभी परिचालनों को रद्द कर रहा हूं और उन्हें पुनरारंभ कर रहा हूं। लेकिन यह प्रक्रिया के संदर्भ में किसी तरह की नकल का कारण बन जाएगा। मैंने NSOperationQueue के सेटस्पेन्ड ध्वज के साथ प्रयास किया। लेकिन यह ऑपरेशन को निलंबित नहीं कर रहा है। क्या कोई रास्ता है?मैं NSOperationQueue में NSOperation को कैसे रोक सकता हूं?
उत्तर
इस देखें: Link
और से यहां apple docs:
निलंबित और फिर से शुरू करना कतार आप आपरेशन के निष्पादन के लिए एक अस्थायी पड़ाव जारी करने के लिए चाहते हैं, आप इसी आपरेशन कतार निलंबित कर सकते हैं setSuspended: विधि का उपयोग कर।
एक कतार को निलंबित करने से पहले से ही अपने कार्यों के बीच में रुकने के लिए संचालन निष्पादित नहीं होता है। यह केवल नए संचालन को निष्पादन के लिए निर्धारित होने से रोकता है। किसी भी चल रहे काम को रोकने के लिए उपयोगकर्ता अनुरोध के जवाब में आप एक कतार निलंबित कर सकते हैं, क्योंकि उम्मीद है कि उपयोगकर्ता अंततः उस काम को फिर से शुरू करना चाहता है।
मैं इस कोशिश की नहीं है, लेकिन मैं शायद यहाँ शुरू होगा:
- अपने
NSOperation
उपवर्ग - करने के लिए एक
isPaused
फ्लैग जोड़ने आपरेशन के डेटा के लिए एक प्रतिलिपि/स्थानांतरित तरीका लागू - अगर रोका गया, (
-main
में इस बदलाव के लिए देखें) - राज्य को रोके हुए ऑपरेशन से नए ऑपरेशन में स्थानांतरित करने वाला एक नया ऑपरेशन
- , कतार में आपरेशन आदेश को पुन: व्यवस्थित करने के लिए प्राथमिकता समायोजित अगर आप
- क्लोन कतार में में
-main
ध्यान दें कि यह बस इसे निलंबित कर देगा -main
से
अब, यदि आप देख रहे हैं या विशेष समापन कर रहे हैं, तो आपको कुछ अन्य समस्याएं होंगी। सरल मामलों के लिए, ऐसा लगता है कि यह दृष्टिकोण ठीक काम करेगा।
- 1. NSOperation और NSOperationQueue कॉलबैक
- 2. सी ++ NSOperation और NSOperationQueue
- 3. [NSOperation CancelAllOperations]; ऑपरेशन को रोक नहीं है
- 4. वर्तमान में निष्पादित NSOperation को कैसे पकड़ें?
- 5. मैं zsh में कैसे रोक सकता हूं?
- 6. NSOperation
- 7. मैं CruiseControl.NET में समवर्ती बिल्ड को कैसे रोक सकता हूं?
- 8. मैं विंडोज़ में फोकस चोरी को कैसे रोक सकता हूं?
- 9. मैं फ्लोट बाएं कैसे रोक सकता हूं?
- 10. NSOperation
- 11. मैं टोमकैट पर बेजोड़ अपवादों को कैसे रोक सकता हूं?
- 12. मैं सभी jQuery एनिमेशन को कैसे रोक सकता हूं?
- 13. मैं सेलेरी कार्यों के निष्पादन को कैसे रोक सकता हूं?
- 14. मैं ऑब्जेक्ट प्रारंभ करने को कैसे रोक सकता हूं?
- 15. मैं राउंडिंग डेसिमल को कैसे रोक सकता हूं?
- 16. मैं निर्भरताओं को अद्यतन करने से कैसे रोक सकता हूं?
- 17. मैं लिनक्स sys कॉल को कैसे रोक सकता हूं?
- 18. मैं ब्रूट-फोर्स हमलों को कैसे रोक सकता हूं?
- 19. जावास्क्रिप्ट: मैं बैकस्पेस कैरेक्टर को कैसे रोक सकता हूं?
- 20. NSOperationQueue IOS5
- 21. मैं रूबी में विधि कॉल कैसे रोक सकता हूं?
- 22. मैं एचटीएमएल में पाठ से एचटीएमएल कैसे रोक सकता हूं?
- 23. क्या मैं पीडीओ में लंबे प्रश्नों को रोक सकता हूं?
- 24. रोकें NSOperation
- 25. NSOperation
- 26. मैं 100 जारी रखने से curl कैसे रोक सकता हूं?
- 27. क्या मैं सिस्टम को रोक सकता हूं। थ्रेडिंग। टिमर
- 28. मैं फ़ायरफ़ॉक्स के स्वतः पूर्ण कैसे रोक सकता हूं?
- 29. क्या मैं सीधे नामक फ़ंक्शन को रोक सकता हूं?
- 30. गैर स्वैच्छिक संदर्भ स्विच: मैं उन्हें कैसे रोक सकता हूं?
धन्यवाद! मैंने आपके लिंक से लागू करने की कोशिश की। मैंने NSOperation के अंदर 'isPaused' नामक एक नया चर जोड़ा और जब भी मुझे ऑपरेशन को रोकना होगा, तो मैं इसका मान YES पर सेट कर दूंगा। NSOperation के अंदर मैं नियमित रूप से 'isPaused' के मान की जांच करूंगा। जब भी मैं इसे 'हां' में पाता हूं तो मैं लूप से बाहर हो जाऊंगा। लेकिन मुझे यहां गंभीर समस्या है। मैं मुख्य थ्रेड से 'isPaused' के मान को सेट करने का प्रयास कर रहा हूं। इससे कुछ दौड़ की स्थिति हो सकती है। क्या दौड़ की स्थिति से छुटकारा पाने का कोई तरीका है? क्या एक ही धागे (मुख्य धागे की बजाय) में विधियों को रोकने के लिए (रोकें और फिर से शुरू करें) को कॉल करने का कोई तरीका है? – Advaith
@Advaith: यदि दोनों थ्रेड्स 'isPaused' से पढ़ने या लिखने से पहले एक म्यूटेक्स को लॉक करते हैं, तो आपको दौड़ के बारे में चिंता करने की आवश्यकता नहीं होगी। –