忙于等待代码隐藏 - dotnetnuke

Busy waiting in codebehind - dotnetnuke

我正在为 DNN 网站编写一个小模块。我需要每 n 秒更新一次 <div>,使用代码隐藏中的列表内容,一次一个列表项。我在网页上设置了一个 <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 不起作用。非常感谢。

P.S。我的计时器设置正确,因为如果我摆脱 while 循环并用 DateTime.Now.

更新它,<div> 就会更新

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