コード例 #1
0
        /// <summary>
        /// 多线程设置,导致空指针
        /// </summary>
        public void Test01()
        {
            List <Student> list1 = new List <Student>()
            {
                new Student()
                {
                    Name = "A", Age = 1
                },
                new Student()
                {
                    Name = "B", Age = 2
                }
            };

            StudentTeamA teamA = new StudentTeamA();
            Thread       t1    = new Thread(() =>
            {
                teamA.Students = list1;
                Thread.Sleep(3000);
                Console.WriteLine(teamA.Students.Count);
            });

            t1.Start();

            Thread t2 = new Thread(() => teamA.Students = null);

            t2.Start();
        }
コード例 #2
0
        public static void TestThread()
        {
            StudentTeamA teamA = new StudentTeamA();
            Thread       t1    = new Thread(() =>
            {
                teamA.Students = listStudent;
                Thread.Sleep(3000);
                Console.WriteLine(listStudent.Count); //模拟对
                //集合属性进行一些运算
            });

            t1.Start();
            Thread t2 = new Thread(() =>
            {
                listStudent = null;   //模拟在别的地方对list1而
                //不是属性本身赋值为null
            });

            t2.Start();
        }