我有一个Operation子类和操作队列,maxConcurrentOperationCount = 1.
这按顺序执行我的操作,我添加它们是好的,但现在我需要等到所有操作完成后再运行另一个进程.
我正在尝试使用通知组,但是一旦将操作添加到队列中,这就会在for循环中运行,通知组将触发..如何在运行另一个进程之前等待所有操作离开队列?
for (index, _) in self.packArray.enumerated() {
myGroup.enter()
let myArrayOperation = ArrayOperation(collection: self.outerCollectionView, id: self.packArray[index].id, count: index)
myArrayOperation.name = self.packArray[index].id
downloadQueue.addOperation(myArrayOperation)
myGroup.leave()
}
myGroup.notify(queue: .main) {
// do stuff here
}
Run Code Online (Sandbox Code Playgroud) 使用operation.cancel()不会取消当前操作.如果队列中有操作,它似乎取消它,但如果它正在执行,那么它似乎不会停止它.
我是否需要将某些内容发送回我的子类操作中的main()函数以使其停止?
for operation in downloadQueue.operations {
if operation.name == opName {
if operation.isExecuting == true {
operation.cancel()
}
}
}
Run Code Online (Sandbox Code Playgroud)