我在线程里面给全局变量赋值,如ShareBL.XY = 99;
然后在当前线程直接Console.WriteLine(ShareBL.XY);
为什么显示的结果为0呢?求解

解决方案 »

  1.   

    LZ 你需要提供更详细的信息, 比如: ShareBl.XY=0 是初始值吗?还有 WRITELINE 跟 复制的语句是一个线程吗?
      

  2.   

    ShareBl.XY的初始值是这么设置的:
     public static int XY;
    ShareBl.XY=99是在线程里面赋值的,我在主线程里面用Console.WriteLine(ShareBL.XY)打印结果
      

  3.   

    你靠什么学多线程编程?不要自己想当然。给你写个多线程的例子(尽管这里使用子线程是画蛇添足的)using System;
    using System.Threading;namespace ConsoleApplication1
    {
        class Program
        {
            public static int XY;        static void Main(string[] args)
            {
                ThreadPool.QueueUserWorkItem(h =>
                {
                    abc(() =>
                    {
                        Console.WriteLine(XY);
                    });
                });
                Console.ReadLine();
            }        private static void abc(Action callback)
            {
                XY = 99;
                callback();
            }
        }
    }
      

  4.   

    或者换个程序using System;
    using System.Threading;namespace ConsoleApplication1
    {
        class Program
        {
            public static int XY;        static void Main(string[] args)
            {
                var eh = new ManualResetEvent(false);
                ThreadPool.QueueUserWorkItem(h =>
                {
                    abc();
                    eh.Set();
                });
                eh.WaitOne();
                Console.WriteLine(XY);
                Console.ReadLine();
            }        private static void abc()
            {
                XY = 99;
            }
        }
    }