मैं वर्तमान में ग्रैंड सेंट्रल डिस्पैच के साथ खेल रहा हूं और DispatchWorkItem
नामक एक कक्षा की खोज की है। प्रलेखन थोड़ा अपूर्ण लगता है इसलिए मुझे इसे सही तरीके से उपयोग करने के बारे में निश्चित नहीं है। मैंने निम्नलिखित स्निपेट बनाया और कुछ अलग होने की उम्मीद की। मुझे उम्मीद है कि इस पर cancel
पर कॉल करने के बाद आइटम रद्द कर दिया जाएगा। लेकिन पुनरावृत्ति किसी कारण से जारी है। कुछ मालूम है मुझसे क्या गलत हो रहा है? कोड मेरे लिए ठीक लगता है।जीसीडी में डिस्पैच वर्कइटम को कैसे रोकें?
@IBAction func testDispatchItems() {
let queue = DispatchQueue.global(attributes:.qosUserInitiated)
let item = DispatchWorkItem { [weak self] in
for i in 0...10000000 {
print(i)
self?.heavyWork()
}
}
queue.async(execute: item)
queue.after(walltime: .now() + 2) {
item.cancel()
}
}
धन्यवाद, यह वही है जो मैं ढूंढ रहा था। –
रद्द किए जाने के बाद DispatchWorkItem का पुन: उपयोग किया जा सकता है? – pixelfreak
@pixelfreak - नहीं। अगर आप इसे फिर से शुरू करना चाहते हैं तो नया बनाएं। – Rob