我用“Timer”刷新“Label”的内容,通过任务管理器看到IE内存占用不断增长。页面放久了,就内存溢出了。该怎么解决?
写了个简单测试代码:
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="100" OnTick="Timer1_Tick" />
<div>
<asp:Label ID="Label1" runat="server" Text="你好" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
Default.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = "(Ajax.net)现在时间:" + DateTime.Now.ToString();
}
}
我个人建议你最好不要用那个UpdatePanel,最好手写异步AJAX,
建议用JQUERY,extjs都可以
这是一段简单的时间显示js,copy一下用就行了:
html:
<div class="clock" id="showClock">这里是时间div</div>
js
Clock();
function Clock()
{
var time=new Date();
$('showClock').innerHTML=time.toLocaleTimeString();
setTimeout('Clock()',1000);
}
function $(id){return document.getElementById(id);}
时间这种频繁更新的不建议用timer。楼上说的。用ajax的客户端请求的方法。或者用javascript、jquery结合setTimeou来实现。
用JQUERY框架setTimeout请求,或者你在头部加上EnableViewState=False;