用的是Timer控件来刷新的。但是发现这个太占CPU了。多开几个就完蛋了。大家看看怎么处理。在不断的链接数据库。不是断开试么
 protected void Page_Load(object sender, EventArgs e)
    {
    }
    public void upload()
    {
        int nu = 0;
        Random random = new Random();
        for (int i = 0; i < ListTest().Count; i++)
        {
            nu = random.Next(ListTest().Count);
            this.Label1.Text = ListTest()[nu].ToString();
        }
    }
    public List<string> ListTest()
    {
        List<string> list = new List<string>();
        Tab_Random zhinan_class = (Tab_Random)Tab_RandomManager.Instance.GetModelTab_RandomByWhere("numid=0 order by newid()");
        list.Add(zhinan_class.Daqu);
      
    
        return list;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {        this.Timer1.Enabled = !this.Timer1.Enabled;
        Label2.Text = "".ToString();    }
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        upload();
    }
          
   
    protected void asdasda_Click(object sender, EventArgs e)
    {
        Tab_Random zhinan = (Tab_Random)Tab_RandomManager.Instance.GetModelTab_RandomByWhere("daqu='" + Label1.Text.ToString() + "'");
        string dadada = zhinan.Daqu.ToString();
        AnswerDAL.Intance.ModifyTab_Random(dadada);
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        AnswerDAL.Intance.ModifyTab_RandomAll();
    }    protected void Timer2_Tick(object sender, EventArgs e)
    {
        uploadone();
    }    public void uploadone()
    {
        int nu = 0;
        Random random = new Random();
        for (int i = 0; i < ListTest().Count; i++)
        {
            nu = random.Next(ListTest().Count);
            this.Label2.Text = ListTestone()[nu].ToString();
        }
     
    }    public List<string> ListTestone()
    {
        List<string> list = new List<string>();
        Tab_Random zhinan_class = (Tab_Random)Tab_RandomManager.Instance.GetModelTab_RandomByWhere("numid=0 and daqu='" + Label1.Text .ToString()+ "' order by newid()");
        list.Add(zhinan_class.Name);
        return list;
    }

解决方案 »

  1.   

    每个Tick都从数据库里获取数据?
    你周期设多长的?还有你这号抽来干嘛的
      

  2.   

    我代码好像是那个意思。
    周期设置的Interval="100"  
     
      

  3.   

    我觉得是你程序逻辑有问题,你想要的是从数据库里取出候选的记录,然后随机定时显示到界面上是吧?
    你应该先执行一次数据库查询,比如放在pageload里,把结果保存在成员变量里。然后每次tick的时候随机从列表里选一个显示。100毫秒查询一次数据库对数据库压力很大的。
      

  4.   


    那你看我的方式  不是 先取出来的吗?ListTest()
      

  5.   

    给你个思路。你可以用ajax来异步读取你抽取出去的数据,然后把数据显示到静态页上,
      在你打开静态页的时候,利用jquery来upload来执行操作。
      既然得到了数据, 那么就是 刷新页面了,
       静态页刷新你可以用到<META http-equiv=refresh content=3;url=#>这个。 然后3秒后跳转页面。 跳转的页面还是相同的页面 实现刷新的功能! 这样就可以达到你的要求了!
      

  6.   

    你在每个tick里都循环调用ListTest方法,也就是每次tick都会对数据库访问n次,所以效率是非常低的。
    在pageload方法里取出查询结果,保存在成员变量里,以后随机抽取时从成员变量里取而不是反复调用ListTest。当然抽取一个后可能需要从成员变量里删除,看你实际情况。