解决方案 »

  1.   

    因为你的for循环 中不是把number赋值给textbox或者其它控件
      

  2.   

    1、“经常都遇到这样的错误:调用线程无法访问此对象,因为另一个线程拥有该对象。”
    出现这样的情况说明在线程里调用了控件对象,此时的解决方法就是调用控件对象的Dispatcher.Invoke方法2、“为什么这里没有报这样的错呢?”
    你这里的线程里没有调用控件对象,如果你把这段代码改成下面这样就会出问题了static void ThreadPingProc()
        {
            for (int i = 0; i < 900000000;i++ )
            {
                Number++;
                Button.Content=Number;  //这样就会提示“调用线程无法访问此对象,因为另一个线程拥有该对象”
                Button.Dispatcher.Invoke(() =>Button.Content=Number);  //正确的做法
            }
        }
      

  3.   

    正常情况本来就是可以访问的,只是这里会出现同时访问,所以number的值是不可靠的。至于你说的报错,楼上的说了,这个是由于winfrom设计不充许其它线程操作UI线程的东西,所以要用委托等方式来操作。
      

  4.   

    因为num并不是UI,主线程并不拥有num,当然子线程也并不拥有它num是个全局静态变量,任何线程都可以访问它,但是并不拥有它你想让线程对Num操作的过程中,按钮无法获取它的值,可以加Lock