Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在主线程中设置线程本地值并进入另一个线程_C#_.net_Multithreading_Thread Local - Fatal编程技术网

C# 在主线程中设置线程本地值并进入另一个线程

C# 在主线程中设置线程本地值并进入另一个线程,c#,.net,multithreading,thread-local,C#,.net,Multithreading,Thread Local,我一直在使用在一端设置值,在另一端使用get方法检索值。下面的代码是 public class sample() { public ThreadLocal<Object> tl1 = new ThreadLocal<Object>(); protected void Page_Load(object sender, EventArgs e) { Thread thread = new Thr

我一直在使用在一端设置值,在另一端使用get方法检索值。下面的代码是

public class sample()
{    
        public  ThreadLocal<Object> tl1 = new ThreadLocal<Object>();
        protected void Page_Load(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(Myfunction));
            setname("myval");   
            thread.Start();
        }

        public void setname(String name)
        {
            tl1.Value = name;
        }
        public  String getname()
        {
            return (String)tl1.Value;
        }

        public void Myfunction()
        {
            String value=getname();
        }
}

根据定义,如何解决这个问题,如果从另一个线程访问它,您将得到一个不相关的值,即第二个线程的“本地”值。最好将数据存储在与其相关的上下文中,而不是线程上下文中——特别是如果这实际上类似于ASP.NET(它不保证在整个请求期间使用相同的线程)。例如,(返回ASP.NET)请求有一个允许存储任意键值对的上下文。

根据定义,如果您从另一个线程访问它,您将获得一个不相关的值,即第二个线程的“本地”值。最好将数据存储在与其相关的上下文中,而不是线程上下文中——特别是如果这实际上类似于ASP.NET(它不保证在整个请求期间使用相同的线程)。例如,(返回ASP.NET)请求具有允许存储任意键值对的上下文

ex: "myval" changed to "null"