【问题标题】:How to use Session Variable inside the Thread(Background process ) C#如何在线程(后台进程)C#中使用会话变量
【发布时间】:2014-05-10 20:55:00
【问题描述】:

我在 Thread(Background Process)

内的 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();

这通过一个错误对象引用错误,

而且我也使用过 HttpRuntime.Cache,但是当我在两个系统中运行时,它会产生相同的结果,它应该根据输入而有所不同(我认为它会覆盖值)

我在网上搜索并知道 httpcontext 不能在线程内工作。

所以,请告诉我这个问题的解决方案。

【问题讨论】:

    标签: c# asp.net multithreading session caching


    【解决方案1】:
    var data= SynchronizationContext.Current;
    
    
    Task t = Task.Run(() => {
    
        string sessionValue = null;
    
        data.Post(() => {
    
            sessionValue = HttpContext.Current.Session["value"];
        }
    
    
    });
    

    【讨论】:

    • 谢谢,但我需要将数据表存储到会话变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2012-11-26
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多