0

を実装DispatcherTimerした後、ユーザー インタラクションを含むアプリケーションが動作しません。詳しくは、うるうモーションを使ったアプリを開発しようと思っています。ユーザーがいくつかのジェスチャーを行い、タイマーの終了後に停止するには、タイマーを UI と連携させる必要がありますが、ディスパッチャー タイマーを使用した後、リープ モーションがジェスチャーを検出しなくなりました。アドバイスお願いします!

タイマーの私のコード:

public MainWindow()
{
    dispatcherTimer = new DispatcherTimer();
    dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
    dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
    dispatcherTimer.Tick += dispatcherTimer_Tick;
    dispatcherTimer.Start();
}

void dispatcherTimer_Tick(object sender, EventArgs e)
{
    if (time > 0)
    {
        if (time <= 10)
        {
            if (time % 2 == 0)
            {
                TBCountdown.Foreground = Brushes.Red;
            }
            else
            {
                TBCountdown.Foreground = Brushes.Red;
            }
            time--;
            TBCountdown.Text = string.Format("00:0{0}:0{1}", time / 60, time % 60);
        }
        else
        {
            time--;
            TBCountdown.Text = string.Format("00:0{0}:{1}", time / 60, time % 60);
        }
    }
    else
    {
        dispatcherTimer.Stop();
        MessageBox.Show("Completed");
    }
}
4

2 に答える 2

0

すべての提案をありがとう。Dan Puzey は正しかったです。レスポンシブな方法で WPF UI と連携するように設計されています。時々遅れるだけですが、全体的にはまだ応答するはずです. うまくいけば、もうハングしません。ありがとう!

于 2013-12-16T01:24:56.957 に答える
-2

Dispatacher が同じ UI スレッドで実行されているため、UI が応答しなくなっていると思います。より良い方法は、BackgroundWorker を使用してバックグラウンド スレッドで時間のかかるタスクを実行することです。

于 2013-12-13T05:57:12.247 に答える