title: C# Static Variable access across threads
body: <p>I am experiencing a bad behavior in my C# Multiple thread program. Some of my static members are loosing their values in other threads, while some statics of the same Declaring Type, do not loose their values. </p>
  
  <pre><code>public class Context {
    public Int32 ID { get; set; }
    public String Name { get; set; }
  
    public Context(Int32 NewID, String NewName){
        this.ID = NewID;
        this.Name = NewName;
    }
  }
  
  public class Root {
      public static Context MyContext;
      public static Processor MyProcessor;
  
     public Root(){
       Root.MyContext = new Context(1,"Hal");
  
       if(Root.MyContext.ID == null || Root.MyContext.ID != 1){
           throw new Exception("Its bogus!") // Never gets thrown
       }
  
       if(Root.MyContext.Name == null || Root.MyContext.Name != "Hal"){
           throw new Exception("It's VERY Bogus!"); // Never gets thrown
       } 
  
       Root.MyProcessor = new MyProcessor();
       Root.MyProcessor.Start();
     }
  }
  
  public class Processor {
     public Processor() {
     }
  
     public void Start(){
        Thread T= new Thread (()=&gt; {
  
            if(Root.MyContext.Name == null || Root.MyContext.Name != "Hal"){
                  throw new Exception("Ive lost my value!"); // Never gets Thrown
            }
  
            if(Root.MyContext.ID == null){
                throw new Exception("Ive lost my value!"); // Always gets thrown
            }
  
        });
     }
  }
  </code></pre>
  
  <p>IS this a thread mutation problem while using static members of certain types?</p>