显示一条消息 3 秒钟,然后继续

时间:2021-04-30 13:09:08

标签: c# wpf

我有一个非常简短的方法,可以从数据库中删除一条记录,如果成功,则向用户显示一条消息以确认该记录已被删除...

    private void BtnConfirmDelete_Click(object sender, RoutedEventArgs e)
    {
        // Hide "Record deleted" message
        lblDeleteSuccessful.Visibility = Visibility.Hidden;

        // Call interface method to delete record
        Record recInstance = new Record();
        recInstance.DeleteItemFromDatabase<Record>(recordNum);

        // Display "Record deleted" message
        lblDeleteSuccessful.Visibility = Visibility.Visible;
    }

我试过了……

    private void Delay()
    {
        // Will delay for 3 seconds
        DateTime timeNow = DateTime.Now;
        DateTime afterDelay = timeNow.AddSeconds(3);

        do
        {
            // Nothing !!!
        } while (timeNow != afterDelay);
    }

...和...

    private void Delay()
    {
        int delay = 3000; // Three seconds
        Thread.Sleep(delay);
    }

...但这些都不起作用。

有没有办法做到这一点??

1 个答案:

答案 0 :(得分:1)

看起来您正在使用 WPF 之类的东西。

如果你使用 Thread.Sleep,整个线程将停止。因此,如果您在 UI-Thread 中调用 Delay 方法,它将冻结并且您将看不到 UI 中的任何变化。

相反,您可以在不同的线程中运行代码,以便 UI 线程能够在此期间更改 UI。

这是一种如何使用异步方法实现这一点的方法:

private async Task ToggleVisibilityForThreeSeconds()
{
    lblDeleteSuccessful.Visibility = Visibility.Visible;
    await Task.Delay(3000);
    lblDeleteSuccessful.Visibility = Visibility.Hidden;
}
相关问题