Похоже, вы вызываете steatements в методе, выполняемом основным потоком, который также отвечает за рендеринг. Это означает, что ваш оператор
Task.Delay(1000).Wait(); // waiting 1 second
блокирует рендеринг, поэтому ваши изменения не будут видны.
Существуют разные возможные подходы к решению вашей проблемы, самый простой подход - использовать asyn c , чтобы позволить потоку пользовательского интерфейса продолжить работу в фоновом режиме:
private async void blink()
{
var auxColor = btnCancel.BackgroundColor; // saving the original color (btnCancel is the button name)
btnCancel.BackgroundColor = Color.Red; // changing the color to red
await Task.Delay(1000) // waiting 1 second
btnCancel.BackgroundColor = auxColor; // restoring the original color
}
Другим возможным решением может быть установка исходного цвета после завершения задержки с использованием исходного контекста потока (UI) снова:
var auxColor = btnCancel.BackgroundColor; // saving the original color (btnCancel is the button name)
btnCancel.BackgroundColor = Color.Red; // changing the color to red
Task.Delay(1000).ContinueWith((T) => // waiting 1 second
{
btnCancel.BackgroundColor = auxColor; // restoring the original color
}, TaskScheduler.FromCurrentSynchronizationContext());