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

我想要的是在单击一个按钮后重新启动此计时器

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

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

请有任何想法。它真的很紧急。

4

2 回答 2

0

假设这_dt_tick是一个 Timer 对象,为什么不在你的button1_Click?

_dt_tick.Stop();
_dt_tick.Start();
于 2013-10-24T11:45:51.507 回答
0

stop使用andStart方法怎么样?:

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

更新>>>

啊,你的问题不清楚,但现在我明白你想要什么了。但是,手动调用事件处理程序是不好的做法。取而代之的是,添加一个从事件处理程序调用的新方法。然后您也可以从其他任何地方调用该方法:

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();
}
于 2013-10-24T11:46:58.077 回答