[英]WPF InitializeComponent doesn't seem to work with DispatcherTimer
我是C#和WPF的新手,我試圖了解DispatcherTimer如何與GUI(WPF)一起使用。 我想讓我的應用程序每2秒運行一個函數,但仍然使用該應用程序本身,當我嘗試以下代碼時,計時器啟動,但是我不能使用以下按鈕(注銷和退出),就像應用程序凍結一樣。
public MainLoggedWindow()
{
Globals.mainLoggedWindow = this;
InitializeComponent();
DispatcherTimer dt = new DispatcherTimer();
dt.Tick += new EventHandler(dtTiker);
dt.Interval = new TimeSpan(0, 0, 1);
dt.Start();
}
private void exit_button_Click(object sender, RoutedEventArgs e)
{
logout_button_Click(sender, e);
Environment.Exit(-1);
}
private void logout_button_Click(object sender, RoutedEventArgs e)
{
Globals.LOGGED_IN_USER.logout();
this.Hide();
Globals.mainWindow.Show();
}
private int increment = 0;
private void dtTiker(object sender,EventArgs e)
{
increment++;
Time.Content = increment.ToString();
}
DispatcherTimer
在UI線程上運行。 這意味着,當DispatcherTimer
調用其Tick
方法時,UI線程變得忙於處理此操作,並且它沒有時間處理其他UI輸入(如按鈕單擊),因此窗口凍結。
您可以做的是增加DispatcherTimer
的間隔時間-您的問題描述說是每兩秒鍾一次,但是初始化邏輯每隔一秒鍾就有一次: dt.Interval = new TimeSpan(0, 0, 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.