簡體   English   中英

WPF InitializeComponent似乎不適用於DispatcherTimer

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM