Swift多线程开发 - 9. 取消Operation

在诸如用户离开当前页面的情况下,还没有完成的网络加载可能就不需要继续完成了,这时候就可以通过cancel来取消正在进行中的Operaiton

cancelOperation状态会做如下改变

状态 cancel前 cancel后
isExecuting true false
isFinished false true
isCancelled false true

事实上,Operation基类对于cancel的方法的紧紧只是更新了状态标志。剩余的任务处理还需要我们在子类中实现。当然,start()方法会在开头检测isCancelled属性,确保已经被取消的任务不会再开始

至于真正的取消再执行中的任务,只能手动在实际任务代码中去检测当前的状态是不是isCancelled,如果是的话就终止任务,比如上传下载的进度回调方法中。
或者重写cancel()方法,主动对正在执行中的任务进行终止操作,如果当前的任务支持种终止的话。



作者博客地址

系列文章链接

  • Swift多线程开发 - 1. 概述
  • Swift多线程开发 - 2. GCD 队列和线程
  • Swift多线程开发 - 3. DispatchGroup和Semaphore
  • Swift多线程开发 - 4. 多线程开发的问题
  • Swift多线程开发 - 5. Operations
  • Swift多线程开发 - 6. Operation 队列
  • Swift多线程开发 - 7. Operation 异步队列
  • Swift多线程开发 - 8. Operation 依赖
  • Swift多线程开发 - 9. 取消Operation
  • Swift多线程开发 - 10. Thread Sanitizer

你可能感兴趣的:(Swift多线程开发 - 9. 取消Operation)