请问:web里的timer控件怎么用 实现例如form里timer_tick的功能ne 谢谢拉 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Javascript中的setInterval('alert()',2000)或settimeout("Refresh()",10)不行吗? <script> hour=<%=intHour%>; minute=<%=intMinute%>; second=<%=intSecond%>; function tick() { if (second > 0) { second=second-1; } else { if (minute<1 && hour>0){ hour=hour-1; minute=60; } minute=minute-1; second=59; } if (second < 10){ second="0"+second; } timeString = hour+":"+minute+":"+second; document.Form1.txtHour.value=hour; document.Form1.txtMinute.value=minute; document.Form1.txtSecond.value=second; Clock.innerHTML = timeString; if ((hour*3600+minute*60+second)<=0){ document.Form1.cmdSubmit.click(); } else { window.setTimeout("tick();", 1000); } } </script><asp:button id="cmdSubmit" runat="server" Width="0px" Height="0px" Text="交卷" ></asp:button> private void cmdSubmit_Click(object sender, System.EventArgs e) { } public Int32 intHour=0; public Int32 intMinute=0; public Int32 intSecond=1; private void Page_Load(object sender, EventArgs e) { // 在此处放置用户代码以初始化页面 if(!Page.IsPostBack) { intHour = 10; intMinute = 10; intSecond = 10; } else { intHour = int.Parse(txtHour.Text); intMinute = int.Parse(txtMinute.Text); intSecond = int.Parse(txtSecond.Text); } } daishengs(横舟摆渡) :你的这段代码实现什么功能呢?? web里的timer控件一般都放在GLOBAL.ASAX吧 dan0926 具体怎么用阿 你能不能提供个参考例子呢 http://www.qqread.com/other-webtool/e802116022.html在Web应用程序中执行计划任务(多线程)在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务。 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用。 本文就介绍一个直接在Web应用程序中使用的简单的方法,这个方法不需要任何额外的配置即可轻松实现。由于ASP.NET站点是作为Web应用程序运行的,它并不受线程的限制,因此我们可以非常方便地在Application_Start和Application_End事件中建立和销毁一个计划任务。下面就简单介绍一下在Web站点实现计划任务的方法。我们的例子是定时往文件里添加信息,作为例子,这里把当前的时间定时地写入文件中。一个计划任务的工作单元称之为一个任务(Job),下面的代码描述了对所有任务都可以被调度引擎计划执行的一个通用的接口,这里的每个任务实现了Execute方法,供调度引擎进行调用: public interface ISchedulerJob { void Execute(); }如前所述,我们的例子是实现往文件写如字符日期,下面就是实现这一任务的方法: public class SampleJob : ISchedulerJob { public void Execute() { //文件保存的物理路径,CSTest为虚拟目录名称,F:\Inetpub\wwwroot\CSTest为物理路径 string p = @"F:\Inetpub\wwwroot\CSTest"; //我们在虚拟目录的根目录下建立SchedulerJob文件夹,并设置权限为匿名可修改, //SchedulerJob.txt就是我们所写的文件 string FILE_NAME = p+ "\\SchedulerJob\\SchedulerJob.txt"; //取得当前服务器时间,并转换成字符串 string c = System.DateTime.Now.ToString("yyyy-mm-dd hh:MM:ss"); //标记是否是新建文件的标量 bool flag = false; //如果文件不存在,就新建该文件 if (!File.Exists(FILE_NAME)) { flag = true; StreamWriter sr = File.CreateText(FILE_NAME); sr.Close(); } //向文件写入内容 StreamWriter x = new StreamWriter(FILE_NAME,true,System.Text.Encoding.Default); if(flag) x.Write("计划任务测试开始:"); x.Write("\r\n"+c); x.Close(); } }接下来,我们建立一个配置对象,告诉调度引擎执行什么任务和执行的时间间隔。 public class SchedulerConfiguration { //时间间隔 private int sleepInterval; //任务列表 private ArrayList jobs = new ArrayList(); public int SleepInterval { get { return sleepInterval; } } public ArrayList Jobs { get { return jobs; } } //调度配置类的构造函数 public SchedulerConfiguration(int newSleepInterval) { sleepInterval = newSleepInterval; } }下面就是调度引擎,定时执行配置对象的任务 public class Scheduler { private SchedulerConfiguration configuration = null; public Scheduler(SchedulerConfiguration config) { configuration = config; } public void Start() { while(true) { //执行每一个任务 foreach(ISchedulerJob job in configuration.Jobs) { ThreadStart myThreadDelegate = new ThreadStart(job.Execute); Thread myThread = new Thread(myThreadDelegate); myThread.Start(); Thread.Sleep(configuration.SleepInterval); } } } }所有的准备工作已经完成,下面就是激活引擎的工作了。为了让我们的任务计划执行,我们在Global.asax.cs文件里的Applicatio_Start和Application_End里进行建立和销毁工作,首先建立一个调度进程运行的线程,我们这里的运行间隔时间为3秒钟。 public System.Threading.Thread schedulerThread = null; protected void Application_Start(Object sender, EventArgs e) { SchedulerConfiguration config = new SchedulerConfiguration(1000*3); config.Jobs.Add(new SampleJob()); Scheduler scheduler = new Scheduler(config); System.Threading.ThreadStart myThreadStart = new System.Threading.ThreadStart(scheduler.Start); System.Threading.Thread schedulerThread = new System.Threading.Thread(myThreadStart); schedulerThread.Start(); }最后还需要在程序退出时进行销毁: protected void Application_End(Object sender, EventArgs e) { if (null != schedulerThread) { schedulerThread.Abort(); } }好了,在VS.NET里建立一个C#的Web应用程序工程,建立TaskScheduler.cs类,并修改相应的Global.asax.cs文件。为了能看到效果,我们再建立一个表单WebForm1.aspx,定时刷新来检查我们所记录的数据: <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="CSTest.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>在Web应用程序中执行计划任务的例子</title> <meta http-equiv="refresh" content="10"> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="javascript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5";> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <iframe style="width:100%;height:100%" src="SchedulerJob/SchedulerJob.txt"></iframe> </form> </body> </HTML>对工程进行编译并运行,就可以看到结果了,结果如下: 计划任务测试开始: 2003-13-10 11:08:15 2003-13-10 11:08:18 2003-13-10 11:08:21 2003-13-10 11:08:24 2003-13-10 11:08:27 2003-13-10 11:08:30需要说明的是,以上只是在Web应用程序中执行计划任务的简单例子,对于多个任务来说,需要在不同的线程内进行工作,对计划的安排也是很简单的,实际还需要站点堵塞,当机的情况。另外这里也没有进行错误的处理等工作,相信大家会写出更加完美的代码的。 那些控件不能在层中居中显示 一个条件判断 有没有关于radcontrol控件这方面的教程?重谢 在aps.net中传参数的问题 新浪天气预报的小偷程序 关于网页布局的问题 在本地不会出现这样的问题 发布到服务器上就报错Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常 老瓶装新酒 如何在CLASS中确定路径 如何替换输入内容 如何在应用程序中嵌入Excel?有种的进来看看! 如何点击表格的行触发服务端方法
或settimeout("Refresh()",10)不行吗?
hour=<%=intHour%>;
minute=<%=intMinute%>;
second=<%=intSecond%>;
function tick() {
if (second > 0) {
second=second-1;
} else {
if (minute<1 && hour>0){
hour=hour-1;
minute=60;
}
minute=minute-1;
second=59;
}
if (second < 10){
second="0"+second;
}
timeString = hour+":"+minute+":"+second;
document.Form1.txtHour.value=hour;
document.Form1.txtMinute.value=minute;
document.Form1.txtSecond.value=second;
Clock.innerHTML = timeString;
if ((hour*3600+minute*60+second)<=0){
document.Form1.cmdSubmit.click();
}
else
{
window.setTimeout("tick();", 1000);
}
}
</script><asp:button id="cmdSubmit" runat="server" Width="0px" Height="0px" Text="交卷" ></asp:button>
private void cmdSubmit_Click(object sender, System.EventArgs e)
{
}
public Int32 intMinute=0;
public Int32 intSecond=1; private void Page_Load(object sender, EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
intHour = 10;
intMinute = 10;
intSecond = 10;
}
else
{
intHour = int.Parse(txtHour.Text);
intMinute = int.Parse(txtMinute.Text);
intSecond = int.Parse(txtSecond.Text);
}
}
在Web应用程序中执行计划任务(多线程)
在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务。
实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用。 本文就介绍一个直接在Web应用程序中使用的简单的方法,这个方法不需要任何额外的配置即可轻松实现。由于ASP.NET站点是作为Web应用程序运行的,它并不受线程的限制,因此我们可以非常方便地在Application_Start和Application_End事件中建立和销毁一个计划任务。下面就简单介绍一下在Web站点实现计划任务的方法。我们的例子是定时往文件里添加信息,作为例子,这里把当前的时间定时地写入文件中。一个计划任务的工作单元称之为一个任务(Job),下面的代码描述了对所有任务都可以被调度引擎计划执行的一个通用的接口,这里的每个任务实现了Execute方法,供调度引擎进行调用: public interface ISchedulerJob
{
void Execute();
}如前所述,我们的例子是实现往文件写如字符日期,下面就是实现这一任务的方法: public class SampleJob : ISchedulerJob
{
public void Execute()
{
//文件保存的物理路径,CSTest为虚拟目录名称,F:\Inetpub\wwwroot\CSTest为物理路径
string p = @"F:\Inetpub\wwwroot\CSTest";
//我们在虚拟目录的根目录下建立SchedulerJob文件夹,并设置权限为匿名可修改,
//SchedulerJob.txt就是我们所写的文件
string FILE_NAME = p+ "\\SchedulerJob\\SchedulerJob.txt";
//取得当前服务器时间,并转换成字符串
string c = System.DateTime.Now.ToString("yyyy-mm-dd hh:MM:ss");
//标记是否是新建文件的标量
bool flag = false;
//如果文件不存在,就新建该文件
if (!File.Exists(FILE_NAME))
{
flag = true;
StreamWriter sr = File.CreateText(FILE_NAME);
sr.Close();
}
//向文件写入内容
StreamWriter x = new StreamWriter(FILE_NAME,true,System.Text.Encoding.Default);
if(flag) x.Write("计划任务测试开始:");
x.Write("\r\n"+c);
x.Close();
}
}接下来,我们建立一个配置对象,告诉调度引擎执行什么任务和执行的时间间隔。 public class SchedulerConfiguration
{
//时间间隔
private int sleepInterval;
//任务列表
private ArrayList jobs = new ArrayList(); public int SleepInterval { get { return sleepInterval; } }
public ArrayList Jobs { get { return jobs; } } //调度配置类的构造函数
public SchedulerConfiguration(int newSleepInterval)
{
sleepInterval = newSleepInterval;
}
}下面就是调度引擎,定时执行配置对象的任务 public class Scheduler
{
private SchedulerConfiguration configuration = null; public Scheduler(SchedulerConfiguration config)
{
configuration = config;
} public void Start()
{
while(true)
{
//执行每一个任务
foreach(ISchedulerJob job in configuration.Jobs)
{
ThreadStart myThreadDelegate = new ThreadStart(job.Execute);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
Thread.Sleep(configuration.SleepInterval);
}
}
}
}所有的准备工作已经完成,下面就是激活引擎的工作了。为了让我们的任务计划执行,我们在Global.asax.cs文件里的Applicatio_Start和Application_End里进行建立和销毁工作,首先建立一个调度进程运行的线程,我们这里的运行间隔时间为3秒钟。 public System.Threading.Thread schedulerThread = null;
protected void Application_Start(Object sender, EventArgs e)
{
SchedulerConfiguration config = new SchedulerConfiguration(1000*3);
config.Jobs.Add(new SampleJob());
Scheduler scheduler = new Scheduler(config);
System.Threading.ThreadStart myThreadStart = new System.Threading.ThreadStart(scheduler.Start);
System.Threading.Thread schedulerThread = new System.Threading.Thread(myThreadStart);
schedulerThread.Start();
}最后还需要在程序退出时进行销毁: protected void Application_End(Object sender, EventArgs e)
{
if (null != schedulerThread)
{
schedulerThread.Abort();
}
}好了,在VS.NET里建立一个C#的Web应用程序工程,建立TaskScheduler.cs类,并修改相应的Global.asax.cs文件。为了能看到效果,我们再建立一个表单WebForm1.aspx,定时刷新来检查我们所记录的数据: <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"
Inherits="CSTest.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>在Web应用程序中执行计划任务的例子</title>
<meta http-equiv="refresh" content="10">
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="javascript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5";>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<iframe style="width:100%;height:100%" src="SchedulerJob/SchedulerJob.txt"></iframe>
</form>
</body>
</HTML>对工程进行编译并运行,就可以看到结果了,结果如下: 计划任务测试开始:
2003-13-10 11:08:15
2003-13-10 11:08:18
2003-13-10 11:08:21
2003-13-10 11:08:24
2003-13-10 11:08:27
2003-13-10 11:08:30需要说明的是,以上只是在Web应用程序中执行计划任务的简单例子,对于多个任务来说,需要在不同的线程内进行工作,对计划的安排也是很简单的,实际还需要站点堵塞,当机的情况。另外这里也没有进行错误的处理等工作,相信大家会写出更加完美的代码的。