C#WPF计时器(秒表)

时间:2011-07-31 20:45:11

标签: c# wpf

我正在尝试制作一个简单的秒表,但它只是不起作用..当我按下按钮时应用程序崩溃了。怎么了?

public partial class MainWindow : Window
{
    private DispatcherTimer timer;

    public MainWindow()
    {
        InitializeComponent();
        DispatcherTimer timer = new DispatcherTimer(new TimeSpan(0, 0, 0, 0, 1), DispatcherPriority.Normal, delegate
        {
            this.Show.Text = DateTime.Now.ToString("HH:mm:ss:fff");
        }, this.Dispatcher);
    }

    private void Start(object sender, RoutedEventArgs e)
    {
        timer.Start();
    }

    private void Stop(object sender, RoutedEventArgs e)
    {
            timer.Stop();
    }
}

1 个答案:

答案 0 :(得分:4)

你的问题是:

DispatcherTimer timer = ...

您已经创建了一个定时器的新实例,该实例的作用域是您的构造函数。您尚未设置成员变量timer。这意味着当您点击开始按钮时,您将尝试启动尚未实例化的计时器,并且您将获得NullReferenceException。我建议你:

  • 将成员变量timer重命名为_timer。这有助于避免与类似命名的局部变量混淆。
  • 将行DispatcherTimer timer = new DispatcherTimer更改为_timer = new DispatcherTimer(...