2013-03-26 96 views
1

我有问题挂起当前正在执行的任务,我试图设置NSOperationQueuesetSuspended=YES暂停和setSuspended=NO恢复过程。按照apple docs我不能挂起已经执行的任务。暂停正在执行的任务NSOperationQueue

如果您想暂时停止执行操作,可以使用setSuspended:方法挂起相应的操作队列。暂停队列不会导致已执行的操作在其任务中间暂停。它只是防止新的操作被安排执行。您可能会暂停队列以响应用户请求暂停任何正在进行的工作,因为预期用户可能最终想要恢复该工作。

我的应用程序需要暂停上网操作的时间,以防万一互联网不可用,并最终在互联网可用时恢复相同的操作。有没有解决这个问题的方法?或者我只需要从零开始执行当前任务?

+1

如果您的上传目标支持上传恢复(例如网络服务器),您可以在连接失败时保存上次上传字节的偏移量,并在连接再次可用时从该位置重新启动 – 2013-03-26 11:00:28

回答

1

我认为你需要从零开始。否则会出现两个问题。如果你恢复目前的上传,你不能保证你没有错过任何数据包。同时,如果长时间连接可用,服务器可能会因为操作不完整而删除您之前上传的数据。

1

是否可以恢复或暂停操作队列在这里不是你的问题... 如果它像你想象的那样工作,当你回到服务TCP连接时它可能(而且不)非常好的状态,它可以超时,远程关闭... 你会想知道你的服务器支持什么,并使用REST(或类似的)服务的部分来恢复一个品牌新的连接。

如果你还没有,打印出this,并把它放在你的立方体的墙上,为你的家人制作T恤衫......也许把它作为屏幕保护程序添加?