【问题标题】:How to cancel following operations in operation queue if one operation failed如果一个操作失败,如何取消操作队列中的后续操作
【发布时间】:2015-11-04 16:31:18
【问题描述】:

我在一个队列中有几个操作,并一一设置依赖关系。如果一项操作失败,我希望取消所有后续操作。但是在调用 [queue cancelAllOperations] 之后,操作不会从队列中移除或停止它们。 取消操作不会自动将它们从队列中删除或停止当前正在执行的操作。对于排队等待执行的操作,队列必须在识别出它被取消并将其移动到完成状态之前仍然尝试执行该操作。 我怎样才能取消所有剩余的操作?谢谢。

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:

    NSOperation 有一个 cancelled 属性,可以由您或NSOperationQueue 在单个操作上显式设置以响应cancelAllOperations 消息。操作应在其main 方法中检查此属性。对于将快速完成的操作,不值得实施此检查。如果一个操作需要很长时间(几秒钟或更长时间),它应该定期做这样的事情:

    - (void)main {
        \\ ...do work... 
    
        if (self.isCancelled) {
          \\ ...get out...  
        } 
     } 
    

    This blog 很好地解释了这个概念!

    【讨论】:

    • 谢谢,很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2022-10-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多