2017-04-18 28 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