none
vs08 打断点的时候,对定时器的影响? RRS feed

  • 问题

  • 我想问一下,在vs08里面,如果在代码上打断点的时候,如果是 Thread空间里的那个定时器的话,会不会继续运行,如果不会的话,那当程序继续的时候,这个定时器是重新计时还是从断点的时候的时间继续往下计时?????还有,对另外两个定时器有什么其他的影响么?
    2009年12月5日 2:21

答案

  • 你好!
         实际上可以这样理解,只有程序执行到断点的时候,程序才会终止,比如:
            private System.Timers.Timer timer = new System.Timers.Timer(1000);
            private int count = 0;
            public Form1()
            {
                InitializeComponent();
                timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            }

            private void change()
            {
                count += 1;
                this.label1.Text = count.ToString();
            }

            void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                MethodInvoker In = new MethodInvoker(change);
                this.BeginInvoke(In);
               
            }

            private void button1_Click(object sender, EventArgs e)
            {
                timer.Start();
                int i = 0;
                int j = i + 1;     //这行加断点,点击button1,就在这里主线程中断,但是timer_Elapsed方法并没有遇到这个断点,所以他还在继续执行!当你继续执行程序的时候,会发现Label显示的数字已经变化了!
            }
    周雪峰
    2009年12月5日 4:33
    版主

全部回复

  • 你好!
         实际上可以这样理解,只有程序执行到断点的时候,程序才会终止,比如:
            private System.Timers.Timer timer = new System.Timers.Timer(1000);
            private int count = 0;
            public Form1()
            {
                InitializeComponent();
                timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            }

            private void change()
            {
                count += 1;
                this.label1.Text = count.ToString();
            }

            void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                MethodInvoker In = new MethodInvoker(change);
                this.BeginInvoke(In);
               
            }

            private void button1_Click(object sender, EventArgs e)
            {
                timer.Start();
                int i = 0;
                int j = i + 1;     //这行加断点,点击button1,就在这里主线程中断,但是timer_Elapsed方法并没有遇到这个断点,所以他还在继续执行!当你继续执行程序的时候,会发现Label显示的数字已经变化了!
            }
    周雪峰
    2009年12月5日 4:33
    版主
  • 哦,也就是说断点只能打断 代码运行着的那条线程?其他线程就不受影响是吧

    2009年12月5日 7:52
  • 是这样的!
    周雪峰
    2009年12月5日 8:06
    版主