有时候我们需要ASP.NET的server端一直运行一个后台线程,进行一些如刷新网页,检查某些网址之类的工作,当然我们还需要可以控制这个线程开始和结束,且保证不会过多的建立线程。这些可以通过一个静态的的System.Threading类成员来实现(在示例线程中,我们反复把当前时间写入一个文本文件中),代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.IO;
public class BackgroundThread
{
private static Thread thread = new Thread(new ThreadStart(BackgroundThread.doSomething));
private static void doSomething(){
while (true)
{
StreamWriter SW;
SW = File.CreateText(@"/test.txt");
SW.WriteLine(DateTime.Now.ToString());
SW.Close();
Thread.Sleep(100);
}
}
public void trigger(){
if (thread.IsAlive)
{
thread.Abort();
}
else
{
thread.IsBackground = true;
thread.Start();
}
}
public BackgroundThread()
{
}
}
我们可以在ASP.NET页面中建立一个Background对象,通过trigger()函数来控制其开始或者结束。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.IO;
public class BackgroundThread
{
private static Thread thread = new Thread(new ThreadStart(BackgroundThread.doSomething));
private static void doSomething(){
while (true)
{
StreamWriter SW;
SW = File.CreateText(@"/test.txt");
SW.WriteLine(DateTime.Now.ToString());
SW.Close();
Thread.Sleep(100);
}
}
public void trigger(){
if (thread.IsAlive)
{
thread.Abort();
}
else
{
thread.IsBackground = true;
thread.Start();
}
}
public BackgroundThread()
{
}
}
我们可以在ASP.NET页面中建立一个Background对象,通过trigger()函数来控制其开始或者结束。