Использование async для сна в потоке без замораживания
Итак, я здесь ярлык ( "). Когда нажата кнопка (кнопка1), текст ярлыка превращается в" Тест ". Через 2 секунды текст возвращается обратно в" ". Я сделал эту работу с таймером (который имеет интервал 2000):
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "Test";
timer.Enabled = true;
}
private void timer_Tick(object sender, EventArgs e)
{
label1.Text = "";
}
Это работает; однако, мне любопытно, что он работает в асинхронном методе.
Мой код выглядит так:
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "Test";
MyAsyncMethod();
}
public async Task MyAsyncMethod()
{
await Task.Delay(2000);
label1.Text = "";
}
Это не работает.
Ответы
Ответ 1
Как я уже говорил, ваш код работал отлично для меня, но, возможно, попробуйте настроить обработчик на async
и запустить Task.Delay
там.
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
label1.Text = "Test";
await Task.Delay(2000);
label1.Text = "";
}