C # WPF таймер (секундомер) - PullRequest
2 голосов
/ 01 августа 2011

Я пытаюсь сделать простой секундомер, но он просто не работает .. Приложение просто падает, когда я нажимаю кнопки. Что не так?

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 Ответ

4 голосов
/ 01 августа 2011

Ваша проблема заключается в следующем:

DispatcherTimer timer = ...

вы создали новый экземпляр таймера, который ограничен вашим конструктором.Вы не установили переменную-член timer.Это означает, что при нажатии кнопки запуска вы будете пытаться запустить таймер, который еще не был создан, и вы получите исключение NullReferenceException.Я предлагаю вам:

  • переименовать переменную-член timer в _timer.Это помогает избежать путаницы с одноименными локальными переменными.
  • измените строку DispatcherTimer timer = new DispatcherTimer на _timer = new DispatcherTimer(...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...