我如何知道调度队列的后台处理已终止?



我正在Swift中编写后台处理。

我想在流程完成后再做一个流程。

let dispatchQueue = DispatchQueue(label: "QueueIdentification", qos: .background)
dispatchQueue.async
{
}

我如何知道DispatchQueue的后台处理已终止?

这里的"不要问-告诉"原则更好:

let dispatchQueue = DispatchQueue(label: "QueueIdentification", qos: .background)
dispatchQueue.async
{
// do whatever needed here
DispatchQueue.main.async {
// inform whoever needed about completion here
}
}

我将给出一个与Asperi略有不同的公式,尽管我们说的是一样的。您有:

dispatchQueue.async {
}

当你找到正确的大括号时,异步的东西就结束了:

dispatchQueue.async {
} // <-- here

这看起来可能没有太大帮助,因为右大括号是不可执行的,尽管您在调试程序中执行代码时确实到此为止。但再回到一行:

dispatchQueue.async {
// ... some stuff happens ...
// THIS is the last thing that happens; once this line runs, it's all over
}

所以诀窍是,使用最后一行来"知道后台处理已经终止"。

最新更新