我想做一个冗长的后台操作;完成后我需要刷新一个TableView
let globalQueue = DispatchQueue.global()
globalQueue.async {
//My lengthy code
}
我需要在异步任务完成后执行此操作
treeview.reloadData()
如何挂钩GCD任务完成事件?我有C#背景,我是SWIFT的新手..请指教。
答案 0 :(得分:3)
您只需将其放在代码后面的main
队列中:
let globalQueue = DispatchQueue.global()
globalQueue.async {
// Your code here
DispatchQueue.main.async {
self.treeview.reloadData()
}
}
答案 1 :(得分:1)
我建议使用DispatchGroup
。通过组,您可以创建依赖关系,并在完成所有操作后收到通知。
// create a group to synchronize our tasks
let group = DispatchGroup()
// The 'enter' method increments the group's task count…
group.enter()
let globalQueue = DispatchQueue.global()
globalQueue.async {
// my lengthy code
group.leave()
}
// closure will be called when the group's task count reaches 0
group.notify(queue: .main) { [weak self] in
self?.tableView.reloadData()
}