Подтвердить что ты не робот

Использование 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 = "";
}

Это не работает.

4b9b3361

Ответ 1

Как я уже говорил, ваш код работал отлично для меня, но, возможно, попробуйте настроить обработчик на async и запустить Task.Delay там.

private async void Button_Click_1(object sender, RoutedEventArgs e)
{
    label1.Text = "Test";
    await Task.Delay(2000);
    label1.Text = "";
}