有一类
class aaa
{
    public static string str ; 
    public static void med1(string s)
    {
        str=s;
    } 
}在其他处连续调用该类中静态方法class bbb
{
    void med2()
    {
        aaa.med1("1");
        string s1=aaa.str;
        aaa.med1("2");
        string s2=bbb.str;
        //这里断点
    }
}
执行med2方法 有时候正确 s1是1 s2是2 
但有时候 s1和s2都是1(程序运行比较快时) 
是不是在aaa方法结束时 由于静态变量依赖于类 并未被及时释放所以导致str的值第2次没赋上还是1,
或是线程在第2次调用med1方法时没用同步。
谁给我解释下什么原因造成的,该如何解决?
有人说  lock (typeof(string))  我试了下根本不好使
        {
            str = s;
        }

解决方案 »

  1.   

            aaa.med1("1"); 
            string s1=aaa.str; 
            aaa.med1("2"); 
            string s2=bbb.str; // 这里?
      

  2.   

    我打错了应该是          aaa.med1("1");
                         string s1=aaa.str;
                         aaa.med1("2");
                         string s2=aaa.str;
      

  3.   

    我要是设了断点一步步走 保证 没问题s1=1 s2=2 
    但是要是直接运行 经常会 s1=1 s2=1