
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="执行耗时操作" /><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Ping" />
<asp:Timer ID="Timer1" runat="server" Enabled="False" Interval="1000" OnTick="Timer1_Tick">
</asp:Timer>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<input id="Text1" type="text" />
</form>
public partial class ThreadTest : System.Web.UI.Page
{
public static int Counter = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Counter = 0;
Timer1.Enabled = false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Timer1.Enabled = true;
DateTime dtStart = DateTime.Now;
NewThreadWork newThreadWork = new NewThreadWork();
newThreadWork.ThreadStart += new System.Threading.ThreadStart(LongTimeOpt);
newThreadWork.Run();
TimeSpan ts = DateTime.Now - dtStart;
this.TextBox1.Text = ts.Milliseconds.ToString();
}
private void LongTimeOpt()
{
int totle = 100000000;
for (int i = 0; i < totle; i++)
{
for (int j = 0; j < totle; j++)
Counter = i;
}
}
protected void Button2_Click(object sender, EventArgs e)
{
this.TextBox2.Text = Counter.ToString();
}
public class NewThreadWork
{
private static object obj = new object();
public System.Threading.ThreadStart ThreadStart;
public void Run()
{
lock (obj)
{
System.Threading.Thread thread = new System.Threading.Thread(ThreadStart);
thread.Start();
}
}
}
protected void Timer1_Tick(object sender, EventArgs e)
{
this.TextBox2.Text = Counter.ToString();
}
}