ThreadLocal<>的数据不一致

时间:2015-08-15 20:49:03

标签: c# asp.net thread-local

我试图使用下面的变量向GridView添加动态行。

private static ThreadLocal<List<Product>> productList = null;

下面是动态添加行的事件处理程序。

protected void Button1_Click(object sender, EventArgs e)
{

            if (productList == null || productList.Value == null)
            {

                productList = new ThreadLocal<List<Product>>(() => new List<Product>());
            }
            productList.Value.Add(new Product { ProductID = 100, ProductName = "Product " + Thread.CurrentThread.Name, UnitPrice = 5000 });
            GridView1.DataSource = productList.Value;
            GridView1.DataBind();
        }

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
}

public class Product
{
        public int ProductID { get; set; }
        public string ProductName { get; set; }
        public decimal UnitPrice { get; set; }
}

我点击了添加行的按钮。问题是最多5-6行,数据正确加载,然后再次行变为1,之后再次出现多行。所以我假设线程仍然在这里横切,数据在两者之间消失,这是不期望使用ThreadLocal&lt;&gt;。任何意见?

0 个答案:

没有答案