简体   繁体   English

如何在Thread(Background process)C#中使用Session变量

[英]How to use Session Variable inside the Thread(Background process ) C#

I have an Issue in Storing data in Session inside the Thread(Background Process) 我在Thread(后台进程)内部的Session中存储数据时遇到问题

 DataTable dtmultifamilyurlvalues = new DataTable();
                    dtmultifamilyurlvalues.Columns.Add("FamilyHomes");
                    dtmultifamilyurlvalues.Columns.Add("AllListiedCurrent");
                    dtmultifamilyurlvalues.Columns.Add("AllListiedTrend");
                    dtmultifamilyurlvalues.Columns.Add("BottomCurrent");
                    dtmultifamilyurlvalues.Columns.Add("BottomTrend");
                    dtmultifamilyurlvalues.Columns.Add("LowerCurrent");
                    dtmultifamilyurlvalues.Columns.Add("LowerTrend");
                    dtmultifamilyurlvalues.Columns.Add("UpperCurrent");
                    dtmultifamilyurlvalues.Columns.Add("UpperTrend");
                    dtmultifamilyurlvalues.Columns.Add("TopCurrent");
                    dtmultifamilyurlvalues.Columns.Add("TopTrend");

                    //House Size
                    dtmultifamilyurlvalues.Rows.Add("Median House Size", Getmedian(familtypevalue, "a", "Sqft:MEDIAN"), GetTrends(familtypevalue, "a", "Sqft:MEDIAN_trend") + " " + GetTrends(familtypevalue, "a", "Sqft:MEDIAN_trend_strength"),
                        Getmedian(familtypevalue, "b", "Sqft:MEDIAN"), GetTrends(familtypevalue, "b", "Sqft:MEDIAN_trend") + " " + GetTrends(familtypevalue, "b", "Sqft:MEDIAN_trend_strength"),
                        Getmedian(familtypevalue, "l", "Sqft:MEDIAN"), GetTrends(familtypevalue, "l", "Sqft:MEDIAN_trend") + " " + GetTrends(familtypevalue, "l", "Sqft:MEDIAN_trend_strength"),
                        Getmedian(familtypevalue, "u", "Sqft:MEDIAN"), GetTrends(familtypevalue, "u", "Sqft:MEDIAN_trend") + " " + GetTrends(familtypevalue, "u", "Sqft:MEDIAN_trend_strength"),
                        Getmedian(familtypevalue, "t", "Sqft:MEDIAN"), GetTrends(familtypevalue, "t", "Sqft:MEDIAN_trend") + " " + GetTrends(familtypevalue, "t", "Sqft:MEDIAN_trend_strength"));


 HttpContext.Current.Session["datatablevalues"] = dtmultifamilyurlvalues;
 //HttpRuntime.Cache.Insert("multifamilyAltos", dtmultifamilyurlvalues,null,System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 60), System.Web.Caching.CacheItemPriority.Default,null);
                });
            Multifamily.IsBackground = true;
            Multifamily.Start();

This Through an error object reference error, 通过错误对象引用错误,

And I had used HttpRuntime.Cache also but when i run in two systems it produces same results it should be different based on the input(I think it is overriding the value) 我还使用了HttpRuntime.Cache,但是当我在两个系统中运行时,它产生的结果相同,基于输入,它应该是不同的(我认为这是覆盖值)

And i searched to web and know that httpcontext can't be work inside the Thread. 而且我搜索了网络并知道httpcontext不能在Thread中工作。

So,Please tell me a solution for this Issue. 所以,请告诉我这个问题的解决方案。

var data= SynchronizationContext.Current;


Task t = Task.Run(() => {

    string sessionValue = null;

    data.Post(() => {

        sessionValue = HttpContext.Current.Session["value"];
    }


});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM