2013-12-13 2 views
0

После внедрения DispatcherTimer мое приложение, которое включает взаимодействие с пользователем, не работает. Для получения дополнительной информации я пытаюсь разработать приложение, использующее скачкообразное перемещение. Нужно, чтобы таймер работал вместе с пользовательским интерфейсом для пользователя, чтобы сделать некоторые жесты и остановиться после окончания таймера, но теперь скачкообразное движение больше не обнаруживает никаких жестов после использования диспетчерского таймера. Некоторые советы, пожалуйста, спасибо!UI не работает после DispatcherTimer

Мой код для таймера:

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"); 
    } 
} 
+1

Когда приложение перестает отвечать на запросы, вы можете приостановить его в Visual Studio и посмотреть, какой код выполняется. Можете ли вы изменить свой вопрос, чтобы включить эту информацию? Я не вижу ничего плохого в том, что вы опубликовали. (Вам нужно только инициализировать 'dispatcherTimer' один раз.) –

ответ

-2

Я считаю Dispatacher работает на том же UI потоке hecne решений а и интерфейс отвечать на запросы. Лучше всего использовать BackgroundWorker для выполнения трудоемких задач в фоновом потоке.

+0

Классы' Dispatcher' и 'DispatcherTimer' предназначены для работы с интерфейсом WPF в ответном виде. Здесь нет заданий, требующих много времени. –

0

Спасибо за все предложения. Дэн Пузи был прав, он разработан для работы с пользовательским интерфейсом WPF в ответном виде. Он иногда лагает лилу, но в целом он все равно должен реагировать. Надеюсь, он больше не висит. Благодаря!