Как отменить NSUrlSessionDownloadTask - Xamarin IOS - PullRequest
0 голосов
/ 26 февраля 2020

Я пытался отменить активное задание, но, кажется, оно никогда не останавливается, пока оно не будет выполнено. В перегрузке 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();

            }
        });
    }
}
...