DEAR ALL:
怎样一个服务内按一定的频率(每月或每天)执行某一作业
感谢100分!

解决方案 »

  1.   

    用Sql代理Agent实现.
    可以使一个服务内按一定的频率(每月或每天)执行某一作业具体看Sql帮助,SQl Server提供了设置界面,不用手写代码.
      

  2.   

    参考
    http://community.csdn.net/Expert/topic/4211/4211229.xml?temp=.3633081可以把里面那些代码提出来写到一个webservices里面,设定好时间,然后时间一到就执行你的作业
      

  3.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.ServiceProcess;namespace MyNameSpace
    {
    public class MyClass : System.ServiceProcess.ServiceBase
    {
    private System.ComponentModel.Container components = null; //自定义成员声明
    private System.Timers.Timer objTimer=new System.Timers.Timer();

    public MyClass()
    {
    // 该调用是 Windows.Forms 组件设计器所必需的。
    InitializeComponent(); // TODO: 在 InitComponent 调用后添加任何初始化
    } // 进程的主入口点
    static void Main()
    {
    System.ServiceProcess.ServiceBase[] ServicesToRun;

    // 同一进程中可以运行多个用户服务。若要将
    // 另一个服务添加到此进程,请更改下一行
    // 以创建另一个服务对象。例如,
    //
    //   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
    //
    ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MyClass() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun);
    } /// <summary> 
    /// 设计器支持所需的方法 - 不要使用代码编辑器 
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.ServiceName = "MyWindowsService"; } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } /// <summary>
    /// 设置具体的操作,以便服务可以执行它的工作。
    /// </summary>
    protected override void OnStart(string[] args)
    {
    MyTimer();
    }
     
    /// <summary>
    /// 停止此服务。
    /// </summary>
    protected override void OnStop()
    {
    // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
    objTimer.Enabled = false;
    objTimer.Elapsed -= new System.Timers.ElapsedEventHandler(MTimedEvent);
    }
    //--以下是自定义函数


    private void  MyTimer()
    {
    System.Timers.Timer  MT = new System.Timers.Timer (new TimeSpan(1,0,0,0,0));   //一天一次
    MT.Elapsed += new System.Timers.ElapsedEventHandler(MTimedEvent);
    //MT.AutoReset =false;
    //MT.Start();
    MT.Enabled = true; }

    //构造System.Timers.Timer实例 间隔时间事件
    private static void MTimedEvent(object source, System.Timers.ElapsedEventArgs e) 
    {
    MyJob();
    } private static void MyJob()
    {
    .
    .
    .
    .
    .
    .
    }
    }
    }