Отмена метода Graph GetAsyn c (CancellationToken t), похоже, не работает - PullRequest
0 голосов
/ 25 мая 2020

Кажется, я не могу получить приведенный ниже код для отмены GetAsync(). Он продолжает получать файл. Я настраиваю эту цветовую диагностику c и могу видеть, что происходит так, как должно (события щелчка вызывают отмену, рамка прогресса в другом месте экрана становится желтой, а зеленый и красный появляются, как должны).

cts = new System.Threading.CancellationTokenSource(); //declared earlier...
var token = cts.Token;

BackgroundColor = Color.Red;
try
{
    var fileContent = await 

    App.GraphClient.Me.Drive.Root.ItemWithPath(App.selectedOneDriveFolder + "/" + item.path).Content.Request().GetAsync(token);
    // Do nothing with fileContent... this is just for testing
}
catch (Exception ex)
{
    await DisplayAlert("Cancelled finally?", ex.Message, ":(");
}

BackgroundColor = Color.Green;
//and then the clicked event handler...

private void CancelDownloadButton_Clicked(object sender, EventArgs e)
{
    cts?.Cancel();
    ProgressFrame.BackgroundColor = Color.Yellow;
}

Я также пробовал всевозможные разные версии запуска этого (с Task, с .Run и / или .Wait(token)), но безрезультатно. Есть идеи?

...