3

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

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

1 回答 1

4

你的问题是这样的:

DispatcherTimer timer = ...

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

  • 将成员变量重命名timer_timer. 这有助于避免与类似命名的局部变量混淆。
  • 将行更改DispatcherTimer timer = new DispatcherTimer_timer = new DispatcherTimer(...
于 2011-07-31T20:52:52.220 回答