gpt4 book ai didi

swift - DispatchWorkItem 不通知主线程

转载 作者:行者123 更新时间:2023-11-28 12:16:14 27 4
gpt4 key购买 nike

注意:这不是我已经看到的重复问题 Dispatch group - cannot notify to main thread

关于 DispatchWorkItem 没有任何答案

我有如下代码

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)

哪个工作正常(我可以在控制台上看到通知)而不是在主线程中 start DispatchWorkItem false

start DispatchWorkItem false

end DispatchWorkItem

notify

现在我尝试使用

通知主线程
dwi3.notify(queue: DispatchQueue.main) {
print("notify")

}

但它从不调用,我已经阅读并发现如果线程被阻塞,那么情况就会发生。但我已经在 DispatchQueue.global()

中执行了 DisptachWorkItem

请任何人都可以帮我解决这个到底是怎么回事?

enter image description here

最佳答案

如果您在 playground 中运行异步代码,则需要启用无限期执行,否则执行可能会在回调执行之前结束。

将以下几行添加到您在 playground 中的代码中:

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

执行此操作后,您将看到通知在主队列上正确执行。

关于swift - DispatchWorkItem 不通知主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46483633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com