2017-04-18 52 views
0

我正在研究一个需要几分钟下载大文件并将其写入磁盘的应用程序。客户已通知我他们希望能够随时取消此项。我所做的是封装全球URLSession,它将处理下载任务。根据用户输入,我将在会话中致电invalidateAndCancel()。我发现,该方法URLSessionDownloadTask:取消写入数据

urlSession(_ session: URLSession, 
     downloadTask: URLSessionDownloadTask,  
     didWriteData bytesWritten: Int64, 
    totalBytesWritten: Int64, 
    totalBytesExpectedToWrite: Int64) 

不会停止即使在会话已经无效,并取消被调用。

问题

,我怎么把这个方法停止执行?

回答

0

Previous Thread

试试上面的链接,我认为它解释它比我能更好。另外Another Reference

+0

嗯......没有。 'invalidateAndCancel'方法取消给定会话中的所有任务(因此取消)。根据文档,在调用该方法后(或最多几毫秒之后才能解释多线程),您将永远不会获得额外的委托调用。如果这不是你所看到的,那么要么你没有取消正确的会话,你的任务不在该会话中,或者你发现了一个非常严重的错误。 – dgatwood