我正在为DNN网站编写一个小模块。我需要每隔n秒使用代码隐藏中的列表内容更新<div>
,一次一个列表项。我在网页上设置了<asp:UpdatePanel>
以及5秒<asp:Timer>
。在我的OnTick()
中,我将全局变量flag
设置为1.然后我忙着等待一段时间循环,并且每次flag
从0更改为1时,我都会更新<div>
的内容:
List<String> dcList1 = new List<string>();
for (int i = 0; i < 10; i++)
dcList1.Add(i.ToString());
while (true)
{
for (int i = 0; i < dcList1.Count; i++)
{
//busy wait
while (flag == 0)
{
;
}
mainDiv.InnerHtml = dcList1[i].ToString();
//reset flag
flag = 0;
}
}
页面最终挂起一段时间,最终DNN抛出超时错误。我试图理解为什么使用这样的全局变量flag
不起作用。非常感谢。
P.S。我的计时器设置正确,因为如果我摆脱了while循环,只需更新<div>
,只需用DateTime.Now
更新它。
答案 0 :(得分:0)
好的,我刚看到ASP.net中的服务器端是无状态的,所以flag
中的OnTick
和另一种方法来自该类的不同实例。我最终将我的数据存储在cookie中,然后使用它们定期更新div。