0
我正在研究一個需要幾分鐘下載大文件並將其寫入磁盤的應用程序。客戶已通知我他們希望能夠隨時取消此項。我所做的是封裝全球URLSession
,它將處理下載任務。根據用戶輸入,我將在會話中致電invalidateAndCancel()
。我發現,該方法URLSessionDownloadTask:取消寫入數據
urlSession(_ session: URLSession,
downloadTask: URLSessionDownloadTask,
didWriteData bytesWritten: Int64,
totalBytesWritten: Int64,
totalBytesExpectedToWrite: Int64)
不會停止即使在會話已經無效,並取消被調用。
問題
,我怎麼把這個方法停止執行?
嗯......沒有。 'invalidateAndCancel'方法取消給定會話中的所有任務(因此取消)。根據文檔,在調用該方法後(或最多幾毫秒之後才能解釋多線程),您將永遠不會獲得額外的委託調用。如果這不是你所看到的,那麼要麼你沒有取消正確的會話,你的任務不在該會話中,或者你發現了一個非常嚴重的錯誤。 – dgatwood