1. 程式人生 > >lock 的範圍 ,仍會改變 i 的值

lock 的範圍 ,仍會改變 i 的值

 private static void Timer_ChangeBoolValue(object sender, ElapsedEventArgs e)
        {
            lock (_lock)
            {
                if (i % 2 == 0)
                {
                    Test.isCallBox = false;
                }
                else
                {
                    Test.isCallBox = true;
                }
                i++;

                Test.PrintText();
            }
        }

與 
 private static void Timer_ChangeBoolValue(object sender, ElapsedEventArgs e)
        {

            if (i % 2 == 0)
            {
                Test.isCallBox = false;
            }
            else
            {
                Test.isCallBox = true;
            }
            i++;
            lock (_lock)
            {
                Test.PrintText();
            }
        }

鎖的效果是不一樣的, 下面的仍會改變 i 的值