【发布时间】:2013-02-25 17:21:19
【问题描述】:
我知道这种事情已经在这里被问过很多次了,但我仍然没有完全理解 ASP 中的线程安全。
C#: 其中 Util 是一个静态类,而 theList 是一个静态 List。
Util.theList= new List<Object>();
Util.theList.Add(someObject);
页面加载一次,然后一秒钟后(回发后 1 秒)填充 Util.theList 并重新加载页面以绑定新填充的列表数据:
this.Repeater.DataSource = Util.theList;
this.Repeater.DataBind();
每次填充列表时都会被实例化:
Util.theList= new List<Object>();
如果这不是线程安全的,我怎样才能使它成为线程安全的? 我不能让列表非静态并且在同一页面上,因为一个单独的问题是,如果数据绑定在 page_load 上,则每次只绑定数据: OnDataBind only fires on first postback
【问题讨论】:
-
在这种情况下,静态列表能给你带来什么?无论如何,您每次都在实例化列表?
-
嗨凯尔,它使我可以在第二次回发时访问相同的列表。而如果它不是静态的,则第二次回发时列表将为空
-
什么 usr 声明是正确的,使用 ViewState 进行回发。
标签: c# asp.net data-binding thread-safety