2013-10-24 3 views
-3

я создал таймер, который обновляется каждую секундутаймер вызова с помощью кнопки

using System.Windows.Threading; 

public MainWindow() 
    { 
     InitializeComponent(); 

     _dt_tick.Tick += new EventHandler(_dt_Tick); 
     _dt_tick.Interval = new TimeSpan(0, 0, 1); 
     _dt_tick.Start(); 
    } 

после этого я создающих функцию, связанную с этим таймером

private void _dt_Tick(object s, EventArgs e) 
    { 
     try 
     { 
     ...... 


     } 
     catch (Exception _ex) 
     { MessageBox.Show(_ex.ToString(), "Error in Timer", MessageBoxButton.OK, MessageBoxImage.Error); } 
    } 

то, что я хочу, чтобы перезапустить этот TIMER один раз я нажал на одну кнопку

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     ........... 
    } 

я попробовал с _dt_Tick (объект s, EventArgs е), но я t не работает

любая идея пожалуйста. действительно срочный.

+1

Что вы имели в виду, перезапустив таймер? Он будет работать уже сейчас? –

ответ

0

Как об использовании stopStart и методы ?:

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    _dt_tick.Stop(); 
    _dt_tick.Start(); 
} 

UPDATE >>>

Ах, ваш вопрос был неясен, но теперь я вижу, что вы хотите. Однако плохой практикой является вызов обработчика события вручную. Вместо этого добавьте новый метод, который вызывается из обработчика события. Затем вы можете вызвать этот метод из любого другого места:

private void _dt_Tick(object s, EventArgs e) 
{ 
    DoSomething(); 
} 

private void DoSomething() 
{ 
    try 
    { 
     ... 
    } 
    catch (Exception _ex) 
    { 
     MessageBox.Show(_ex.ToString(), "Error in Timer", MessageBoxButton.OK, 
      MessageBoxImage.Error); 
    } 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    DoSomething(); 
} 
+0

спасибо :) его работа сейчас –

0

Предполагая, что _dt_tick является объектом Timer, почему бы вам не использовать следующий код в вашем button1_Click?

_dt_tick.Stop(); 
_dt_tick.Start(); 
+0

Это делает то, что задал оп. но делает семантически ничего –

+1

Я не использую Таймеры, потому что они, как правило, не являются потокобезопасными, так что вам нужно сбросить таймер? _dt_tick.Reset(); Или что-то? Или вы должны распоряжаться и воссоздавать его каждый раз, когда хотите начать все заново? – Brandon

+0

@Stefan это не работает, то, что я хочу, это вызвать эту функцию private void _dt_Tick (object s, EventArgs e) в моей кнопке click event –

Смежные вопросы