Кажется, я не могу получить приведенный ниже код для отмены 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)
), но безрезультатно. Есть идеи?