Asp.Net(C#)自动执行计划任务的程序实例分析

在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行 ,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务。实现计划任务的方法也有很多, 可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来 完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,这些方法实现起来并不 是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用。 本文就介绍 一个直接在Web应用程序中使用的简单的方法,这个方法不需要任何额外的配置即可轻松实现。

由于ASP.NET站点是作为Web应用程序运行的,它并不受线程的限制,因此我们可以非常方便地在 Application_Start和Application_End事件中建立和销毁一个计划任务。下面就简单介绍一下在Web站点实现 计划任务的方法。我们的例子是定时往文件里添加信息,作为例子,这里把当前的时间定时地写入文件中。

一个计划任务的工作单元称之为一个任务(Job),下面的代码描述了对所有任务都可以被调度引擎计划 执行的一个通用的接口,这里的每个任务实现了Execute方法,供调度引擎进行调用:

1 public interface ISchedulerJob

2     {

3         void Execute();

4     }

如前所述,我们的例子是实现往文件写如字符日期,下面就是实现这一任务的方法:

1 public class SampleJob : ISchedulerJob
2 {
3 public void Execute()
4 {
5 //文件保存的物理路径,CSTest为虚拟目录名称,F:\Inetpub\wwwroot\CSTest为物理路径
6 string p = @"C:\Users\Jack\Desktop\AutoRun\AutoRun";
7 //我们在虚拟目录的根目录下建立SchedulerJob文件夹,并设置权限为匿名可修改,
8 //SchedulerJob.txt就是我们所写的文件
9 string FILE_NAME = p+ "\\SchedulerJob\\SchedulerJob.txt";
10 //取得当前服务器时间,并转换成字符串
11 string c = System.DateTime.Now.ToString("yyyy-mm-dd hh:MM:ss");
12 //标记是否是新建文件的标量
13 bool flag = false;
14 //如果文件不存在,就新建该文件
15 if (!File.Exists(FILE_NAME))
16 {
17 flag = true;
18 StreamWriter sr = File.CreateText(FILE_NAME);
19 sr.Close();
20 }
21 //向文件写入内容
22 StreamWriter x = new StreamWriter(FILE_NAME,true,System.Text.Encoding.Default);
23 if(flag) x.Write("计划任务测试开始:");
24 x.Write("\r\n"+c);
25 x.Close();
26 }
27 }

接下来,我们建立一个配置对象,告诉调度引擎执行什么任务和执行的时间间隔。

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);
}
}
}
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 方法
, public
, 调度
, 定时时间配置
, 任务
一个
,以便于您获取更多的相关知识。

时间: 2024-08-30 12:04:16

Asp.Net(C#)自动执行计划任务的程序实例分析的相关文章

Asp.Net(C#)自动执行计划任务的程序实例分析分享

 这篇文章主要介绍了Asp.Net(C#)自动执行计划任务的程序实例分析,有需要的朋友可以参考一下 在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务.实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案.但是,对于Web应用程序来说,这些方法实现起来

Asp.Net(C#)自动执行计划任务的程序实例分析分享_实用技巧

在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务.实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案.但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用. 本文就介绍

Oracle中获取执行计划的几种方法分析

以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下   1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下: select * from table(

Oracle中获取执行计划的几种方法分析_oracle

1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下:explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下:select * from table(dbms_xplan.display);注意:Explain plan只生成执行计划,并不会真正

一个执行计划解析的小问题分析

前几天,一个开发的同学让我帮忙做一个大查询,给了我一个数据列表,里面的ID有几万个,提供了一个SQL语句,看这情况还得我自己来解析生成相关的SQL了. 假设ID列表为: T100 T200 T300 SQL语句为: select peak_transaction_id,cash ,req_time  ,back_time  from peak_new.peak_detail where peak_transaction_id=?; 对我来说拼成动态SQL也是分分钟,但是这种方式不推荐,还是推荐使

通过分析SQL语句的执行计划优化SQL(二)

优化|语句|执行 第5章 ORACLE的执行计划 背景知识:        为了更好的进行下面的内容我们必须了解一些概念性的术语: 共享sql语句    为了不重复解析相同的SQL语句(因为解析操作比较费资源,会导致性能下降),在第一次解析之后,ORACLE将SQL语句及解析后得到的执行计划存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享.因此,当你执行一个SQL语句(有时被称为一个

注册表取消启动时执行计划任务

  当Windows启动后,计划任务会自动被执行.通常情况下并不需要此功能,可以将此功能关闭. 运行注册表,展开HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices,找到键值项SchedulingAgent值设置为mstask.exe(执行计划任务). 提示:删除"SchedulingAgent"键值项,就可以关闭自动执行计划任务功能.

SQL Server 数据库自动执行管理任务_MsSql

当满足这些指定的条件,则数据库会自动运行管理员指定的操作.使用自动管理来处理日常事务,则让管理员可以抽出时间去关注其他的事情,如数据库优化等等更加具有价值的作业. 计划就是自动化管理组件的一个成员.计划指定了作业运行的时间.多个作业可以根据一个计划运行;多个计划也可以应用到一个作业.但是这个时间跟我们普通上的几点几分又有差异.这个时间不仅指特定的日期或者时间,而且还可以表示特定的时间.如当SQL Server代理启动的时候或者服务器的CPU使用率处于定义的空闲状态水平时.也就是说,这里指的时间计

Oracle查看执行计划的几种方法

Oracle查看执行计划的几种方法   一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划.性能统计数据等,并在语句执行结束后显示在SQL*Plus中. DBA用户可以直接使用AUTOTRACE功能,但是如果用户没有DBA权限,那么需要在SYS用户下执行plustrce.sql脚本,自动创建PLUSTRACE角色,再把PL