簡體   English   中英

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)

哪個工作正常(我可以在控制台上看到通知),而不是在主線程中啟動DispatchWorkItem false

啟動DispatchWorkItem false

結束DispatchWorkItem

通知

現在我試圖使用通知到主線程

dwi3.notify(queue: DispatchQueue.main) {
    print("notify")

}

但是它從未調用過,我已閱讀並發現,如果Thread被阻止,則會發生這種情況。 但是我已經在DispatchQueue.global()執行DisptachWorkItem

請有人可以幫助我,這實際上是怎么回事?

在此處輸入圖片說明

如果在操場上運行異步代碼,則需要啟用不確定的執行,否則執行可能在回調執行之前結束。

將以下行添加到操場上的代碼中:

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

完成此操作后,您將看到通知在主隊列上正確執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM