3
我试图禁用TextBox
用户后几秒钟点击Enter
:线程不是真的在睡觉吗?
<StackPanel>
<TextBox x:Name="txt1" Width="150" Margin="10" KeyUp="txt1_KeyUp"/>
</StackPanel>
private void txt1_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
txt1.IsEnabled = false;
Thread.Sleep(2500);
txt1.IsEnabled = true; //all text is added here
}
}
如果我继续打字时Thread
正在睡觉,一切都我输入弹出,在TextBox
当Thread
“醒来”。
我的问题是,如果有某种缓冲区在GUI线程休眠时存储所有引发的事件?
你不应该睡觉UI线程。而是禁用文本框并安排任务以后重新启用它。 – Nick
我意识到,睡觉的UI线程是不正确的选择,但我的问题是更多关于'Thread.Sleep'方法的工作原理。 – Yoav
您正在睡觉UI线程,因此输入文本的关键事件将需要等待。此外,您可能会在2.5秒内发现您的用户界面无响应,即按Enter键然后尝试调整窗口大小。要回答你的问题没有缓冲,但他们将被阻止,因为他们都在你已经停止执行的一个线程上运行。 – TheKingDave