关于用Monitor进行同步的问题!!!!!
class   Program 
             { 
                         static   int   i   =   11;                           
                         static   void   Fun() 
                         { 
                                     Monitor.Enter(i); 
                                     i++; 
                                     Thread.Sleep(3000); 
                                     i++; 
                                     Monitor.Exit(i);                                       
                         }   
                         static   void   Main(string[]   args) 
                         { 
                                     Thread   t1   =   new   Thread(new   ThreadStart(Fun)); 
                                     Thread   t2   =   new   Thread(new   ThreadStart(Fun)); 
                                     t1.Start(); 
                                     t2.Start(); 
                         }                        
             } 
 为什么报错   :从不同步的代码块中调用了对象同步方法??? 
 我这样为什么不对? 
 我想让两个现成只有1个能改写i
------解决方案--------------------使用 Monitor 锁定对象(即引用类型)而不是值类型。将值类型变量传递给 Enter 时,它被装箱为对象。如果再次将相同的变量传递给 Enter,则它被装箱为一个单独对象,而且线程不会阻止。Monitor 本应保护的代码未受保护。此外,将变量传递给 Exit 时,也创建了另一个单独对象。因为传递给 Exit 的对象和传递给 Enter 的对象不同,Monitor 将引发 SynchronizationLockException。有关详细信息,请参见概念性主题 监视器。