c#等一秒钟
本文关键字:一秒钟 | 更新日期: 2023-09-27 18:03:41
是否有像睡眠(秒)这样的功能,但它不会阻止UI更新?我有一个这样的代码,如果我把线程睡眠后的(letters.Children[Words[index].index] as TextBlock).Text = Words[index].LetterCorrect;
(我想睡在那之后),它只是等待1秒,然后UI得到更新,但我不希望那样。
private void Grid_Click(object sender, RoutedEventArgs e)
{
if (index == Words.Count() - 1) return;
if ((((e.Source as Button).Content as Viewbox).Child as Label).Content.ToString() == Words[index].LetterCorrect)
{
(letters.Children[Words[index].index] as TextBlock).Text = Words[index].LetterCorrect;
letters.Children.Clear();
LoadWord(++index);
this.DataContext = Words[index];
}
}
尝试一个Timer并让Elapsed回调函数在一秒后执行您想要发生的代码。
创建一个为您工作的工作线程,并让该线程在开始工作之前休眠所需的时间
。
ThreadPool.QueueUserWorkItem((state) =>
{
Thread.Sleep(1000);
// do your work here
// CAUTION: use Invoke where necessary
});
将逻辑本身置于与UI线程分开的后台线程中,并让该线程等待。
UI线程中等待1秒的任何东西都将在那一秒内锁定整个UI线程。
使用异步调度回调:
private void Grid_Click(object sender, RoutedEventArgs e)
{
if (index == Words.Count() - 1) return;
if ((((e.Source as Button).Content as Viewbox).Child as Label).Content.ToString() == Words[index].LetterCorrect)
{
(letters.Children[Words[index].index] as TextBlock).Text = Words[index].LetterCorrect;
Scheduler.ThreadPool.Schedule(schedule =>
{
letters.Children.Clear();
LoadWord(++index);
this.DataContext = Words[index];
}, TimeSpan.FromSeconds(1));
}
}
不确定您使用的是什么框架,但如果您使用的是Silverlight或WPF,您是否考虑过播放显示正确字母的动画或需要1000ms的褪色序列?