Я пытался отменить активное задание, но, кажется, оно никогда не останавливается, пока оно не будет выполнено. В перегрузке DidWriteData
я добавил следующее, когда пользователь нажимает кнопку «Стоп»:
downloadTask.Cancel();
session.InvalidateAndCancel();
Однако DidWriteData
все еще продолжается.
Что-то мне не хватает?
Вот код:
public override void DidWriteData(NSUrlSession session, NSUrlSessionDownloadTask downloadTask, long bytesWritten, long totalBytesWritten, long totalBytesExpectedToWrite)
{
float progress100 = 0;
Console.WriteLine("Set Progress");
if (downloadTask == downloadTask)
{
float progress = totalBytesWritten / (float)totalBytesExpectedToWrite;
Console.WriteLine(string.Format("DownloadTask: {0} progress: {1}", downloadTask, progress));
InvokeOnMainThread(() => {
progress100 = progress * 100f;
MainViewController._progressBar2.SetProgress((float)progress, true);
string pctString = String.Format("{0:0.00}", progress100);
MainViewController._uFileStatus.Text = "Downloading in progress: " + pctString + " %";
if (MainViewController.cancelStatus == true)
{
downloadTask.Cancel();
session.InvalidateAndCancel();
}
});
}
}