Note: Ceci est reproduit pas question que je l'ai déjà vu Dispatch group - cannot notify to main threadDispatchWorkItem n'avisait pas thread principal
Il n'y a rien répondu au sujet DispatchWorkItem
J'ai le code comme ci-dessous
let dwi3 = DispatchWorkItem {
print("start DispatchWorkItem \(Thread.isMainThread)")
sleep(2)
print("end DispatchWorkItem")
}
let myDq = DispatchQueue(label: "A custom dispatch queue")
dwi3.notify(queue: myDq) {
print("notify")
}
DispatchQueue.global().async(execute: dwi3)
Ce qui est fonctionne correctement (je peux voir notifier sur la console) et pas dans le fil principal start DispatchWorkItem false
début DispatchWorkItem faux
fin DispatchWorkItem
informer
Maintenant, je suis en train de notifier au fil principal à l'aide
dwi3.notify(queue: DispatchQueue.main) {
print("notify")
}
Mais il appelle jamais, je lire et trouvé que si le fil est bloqué, la situation se produit s. mais je suis déjà exécutais DisptachWorkItem
dans DispatchQueue.global()
S'il vous plaît quelqu'un peut me aider à ce que ce passe réellement?
Votre code fonctionne pour moi avec 'dwi3.notify (queue: DispatchQueue.main)' dans un terrain de jeu et dans une application. Comment est-ce que vous exécutez le code – Paulw11
Il est étrange que je viens d'ajouter du code dans le terrain de jeu, mais 'dwi3.notify (file d'attente: DispatchQueue.main)' ne fonctionne pas !! –
Si vous courez dans un terrain de jeu, vous devez ajouter 'import PlaygroundSupport' et ' PlaygroundPage.current.needsIndefiniteExecution = true' – Paulw11