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