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 に答える