取消对 OperationQueue 的所有操作
Cancelling all operations on OperationQueue
当取消队列中的所有操作时,如文档所述,一些操作可能仍留在队列中,这很好。但是,假设从 maxConcurrentOperationCount = 1
队列中的 5 个操作开始。第二个操作失败,然后我调用 cancelAllOperations()
。当我检查队列时,里面还有一个操作。然后在应用程序中我拉动刷新我想重复这个过程,但是之前的操作还剩下什么?我想重用同一个队列。有什么建议吗?
取消不是从队列中删除操作的事情。触发它们删除的是将操作的 finished
设置为 true
。一旦队列看到 finished
移动到 true
,它就会从队列中删除操作。如果某个操作仍在队列中,可能是它的 finished
设置不正确。
即使设置 isExecuting = false
和 isFinished = true
操作仍在队列中。我所做的是在取消请求后再次重新初始化队列。这样操作是 "deleted" 并且队列是空的。
当取消队列中的所有操作时,如文档所述,一些操作可能仍留在队列中,这很好。但是,假设从 maxConcurrentOperationCount = 1
队列中的 5 个操作开始。第二个操作失败,然后我调用 cancelAllOperations()
。当我检查队列时,里面还有一个操作。然后在应用程序中我拉动刷新我想重复这个过程,但是之前的操作还剩下什么?我想重用同一个队列。有什么建议吗?
取消不是从队列中删除操作的事情。触发它们删除的是将操作的 finished
设置为 true
。一旦队列看到 finished
移动到 true
,它就会从队列中删除操作。如果某个操作仍在队列中,可能是它的 finished
设置不正确。
即使设置 isExecuting = false
和 isFinished = true
操作仍在队列中。我所做的是在取消请求后再次重新初始化队列。这样操作是 "deleted" 并且队列是空的。