使用按钮调用计时器

时间:2013-10-24 11:41:03

标签: c# wpf timer

我创建了一个每秒更新一次的计时器

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); }
    }

我想要的是在我点击一个按钮后重启这个计时器

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

我尝试过_dt_Tick(对象s,EventArgs e),但它不起作用

请问任何想法。真的很紧急。

2 个答案:

答案 0 :(得分:0)

假设_dt_tick是Timer对象,为什么不在button1_Click中使用以下代码?

_dt_tick.Stop();
_dt_tick.Start();

答案 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();
}