我有一个非常简短的方法,可以从数据库中删除一条记录,如果成功,则向用户显示一条消息以确认该记录已被删除...
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);
}
...但这些都不起作用。
有没有办法做到这一点??
答案 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;
}