在codebehind忙着等待 - dotnetnuke

时间:2017-01-20 17:32:57

标签: c# asp.net dotnetnuke busy-waiting

我正在为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更新它。

1 个答案:

答案 0 :(得分:0)

好的,我刚看到ASP.net中的服务器端是无状态的,所以flag中的OnTick和另一种方法来自该类的不同实例。我最终将我的数据存储在cookie中,然后使用它们定期更新div。