0

我正在为 DNN 网站编写一个小模块。我需要<div>每隔 n 秒使用代码隐藏中的列表内容更新一次,一次一个列表项。我<asp:UpdatePanel>在网页上设置了一个 5 秒<asp:Timer>。在我的OnTick()我将一个全局变量设置flag为 1。然后我忙于等待一个 while 循环,每次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不起作用。非常感谢。

PS<div>如果我摆脱了 while 循环并使用DateTime.Now.

4

1 回答 1

0

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

于 2017-01-20T18:52:03.283 回答