在后台线程上完成workItem时如何通知主线程?

时间:2018-01-29 01:00:29

标签: swift

我需要在主线程上执行NSProgressIndicator.stopAnimation之类的操作。但是我想在分配给后台线程的workItem的末尾执行此操作。

NSProgressIndicator.startAnimation(self)

let workItem = DispatchWorkItem {
     //
     // Some tasks
     //

     // This doesn't work, how do I call it on main thread?
     NSProgressIndicator.stopAnimation(self)
}

DispatchQueue.global(qos: .background).async(execute: workItem)

1 个答案:

答案 0 :(得分:3)

使用DispatchQueue.main.async就像在主队列上运行任何代码一样。

let workItem = DispatchWorkItem {
     //
     // Some tasks
     //

     DispatchQueue.main.async {
         NSProgressIndicator.stopAnimation(self)
     }
}