线程的引用还是不太熟悉,要是线程中的方法中内的一个类,有可能获取现在当前线程执行中该类,它的值吗?

解决方案 »

  1.   

    我不懂的像HttpContext.Current.Response.Write,在同一条线程不同函数中内引用它,修改它内的值,只有这个线程引用这个类用这个改变的值,又不像static是共享的
      

  2.   

    又发一贴了精神可嘉我不是给了一个连接地址么???这个不懂可以慢慢来。。主要是和asp.net的设计有关,你看看那个什么“一个http请求进入XXX,再由某某某,再进入XXX……”:-D
      

  3.   


    你是不是想说线程中变量同步的问题呢?很多变量都可以在线程中修改,关键看如果同时很多线程修改一个变量是否会引发问题。
    如果不会则直接引用,如果会发生问题则当一个线程修改一个变量或对象的时候,需要Lock对象,
    直到该线程修改完成,释放Lock,其他线程才可以修改这个变量或对象,
      

  4.   

    呵呵,我不是想知道asp.net的设计,我只是想通过HttpContext.Current.Response.Write这个例子,
    知道这种不是像static共享同一个类里的变量,可又能在同一个线程不同位置(不同函数中调用,好像没有通过参数的传递)修改,而输出时,修改的变量能呈现出来
      

  5.   

    那位能来个例子呢?在这个问题上想不通!像HttpContext.Current.Response.Write这个累加的字符应该不是static类型吧?但它却是能在没有传递参数的情况下实现累加字符    public class MyModule : IHttpModule
        {
            public void Init(HttpApplication application)
            {
                application.BeginRequest += new EventHandler(application_BeginRequest);
            }        void application_BeginRequest(object sender, EventArgs e)
            {
                Test test = new Test();
                test.Show();
                test.Show2();
            }        public void Dispose()
            {
            }
        }
        public class Test
        {
            public void Show()
            {
                System.Web.HttpContext.Current.Response.Write("111111111");
            }
            public void Show2()
            {
                System.Web.HttpContext.Current.Response.Write("222222");
            }    }
      

  6.   

    static 这个变量是共享的吧?在上面的问题上,有点糊涂了
      

  7.   

    eg:class Response
    {
        public string result=string.Empty;
        public void Write(string str){
             result+=str;
        }
    }public class MyModule : IHttpModule
      {
          public MyModule ()
          {
             System.Web.HttpContext.Current.Response=new Response();
          }  public void Init(HttpApplication application)
      {
      application.BeginRequest += new EventHandler(application_BeginRequest);
      }  void application_BeginRequest(object sender, EventArgs e)
      {
      Test test = new Test();
      test.Show();
      test.Show2();
      }  public void Dispose()
      {
      }
      }
      

  8.   

    实际情况是Write的内容是存储在 TextWriter 这个流对象中的,并不是字符串。System.Web.HttpContext.Current.Response 赋值 的过程也在这之前我只是用简单的例子来说明一下
     
      

  9.   

    我想,我最想知道的,还是这个Current
      

  10.   

    谢谢Sandy945这么晚的回复,但,我还是没明白,上面我写的,
    在2个show我想用来说明(能在不同的类用这种静态方式访问),
    Write(string str)内部被用来保存str的不是静态变量,会是怎么的一种实现
      

  11.   

    上面的代码就是要告诉你,和静态没关系Current 就是个HttpContext对象,在请求的整个周期内都存在
      

  12.   

    我知道和静态没关系,我为什么要提HttpContext.Current,不是想知道它的功能,我想知道它是否是在同一条线程下,能修改它所在这条线程的数据和这种方式如何用简单的例子实现。  public class Test
       {
       public void Show()
       {
       System.Web.HttpContext.Current.Response.Write("111111111");
       }
       public void Show2()
       {
       System.Web.HttpContext.Current.Response.Write("222222");
       }   }
    上面这条例子,只要这个类在线程执行中的函数下被调用,
    它就能在不需要将System.Web.HttpContext类传递入test类,而引用像静态一样的调用方法方式引用