DispatchWorkItem 不通知主线程
DispatchWorkItem not notifying 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
请任何人都可以帮我解决这个到底是怎么回事?
如果您是 运行 playground 中的异步代码,那么您需要启用无限期执行,否则执行可能会在回调执行之前结束。
将以下行添加到您在 playground 中的代码中:
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
执行此操作后,您将看到通知在主队列上正确执行。
注意:这不是我已经看过的重复问题
关于 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
请任何人都可以帮我解决这个到底是怎么回事?
如果您是 运行 playground 中的异步代码,那么您需要启用无限期执行,否则执行可能会在回调执行之前结束。
将以下行添加到您在 playground 中的代码中:
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
执行此操作后,您将看到通知在主队列上正确执行。