using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;namespace WeatherService
{
public class Service : System.ServiceProcess.ServiceBase
{
/// <summary> 
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
        private WeatherManager weatherManager = null; public Service()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();
            weatherManager = new WeatherManager(); // TODO: 在 InitComponent 调用后添加任何初始化
} // 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;

// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
//   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun);
} /// <summary> 
/// 设计器支持所需的方法 - 不要使用代码编辑器 
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.ServiceName = "WeatherService";
} /// <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)
{
            weatherManager.TimerStarting();
}
 
/// <summary>
/// 停止此服务。
/// </summary>
protected override void OnStop()
{            weatherManager.TimerStop();
}
}
}

解决方案 »

  1.   

    using System;
    using System.Net;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Timers;
    using System.Threading;
    using System.Diagnostics;
    using System.Xml;
    using System.Text.RegularExpressions;
    using System.Collections;
    using System.Data;
    using System.Data.SqlClient;
    namespace WeatherService
    {
    /// <summary>
    /// 管理
    /// </summary>
    ///  public delegate void TimerManage(); public class WeatherManager 
    {
    private System.Timers.Timer timer = new System.Timers.Timer();
    private TimerManage timerStart,timerStop;
    protected DataTable result = new DataTable();        public WeatherManager()
    {
                          
                                timerStart += new TimerManage(this.Start);
    timerStop += new TimerManage(this.Stop);
    } /// <summary>
    /// 启动定时器
    /// </summary>
    public TimerManage TimerStarting
    {
    get { return timerStart; }
    } /// <summary>
    /// 关闭定时器
    /// </summary>
    public TimerManage TimerStop
    {
    get { return timerStop; }
    } /// <summary>
    /// 启动记时器
    /// </summary>
    /// <returns></returns>
    private void Start()
    {
    //注解 -- 1000=1秒
                timer.Interval = 1000 * 60 ;   // - 时间隔
    timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
    timer.Enabled = true;
    timer.Start();
    } /// <summary>
    /// 停止
    /// </summary>
    /// <returns></returns>
    private void Stop()
    {
    timer.Stop();
    timer.Close();
    } /// <summary>
    /// 在线检测并即时更新数据库
    /// </summary>
    /// <returns></returns>
    protected void timer_Elapsed(object sender,ElapsedEventArgs e)
    {
                StartScan();  //开始检测
    } /// <summary>
    /// 开始检测
    /// </summary>
    /// <param name="start"></param>
    /// <param name="end"></param>
    private void StartScan()
    {
                            
    }
    }
    }
      

  2.   

    谢谢楼上的朋友,可是我还是有点不太明白。当服务启动后,是不是在
    /// <summary>
    /// 启动记时器
    /// </summary>
    /// <returns></returns>
    private void Start()
    {
    //注解 -- 1000=1秒
                timer.Interval = 1000 * 60 ;   // - 时间隔
    timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
    timer.Enabled = true;
    timer.Start();                          在这里加上我要它自动执行的代码呢?
    }
    没有写过服务,不太懂耶!!详细一点说说吧!
      

  3.   

    安装windows服务,在服务的查看器中,选择"自动"不就OK了
    global.ascx文件中也可以使用timer进行这样的操作
      

  4.   

    刚才又仔细看了一下你的代码?/// <summary>
    /// 开始检测
    /// </summary>
    /// <param name="start"></param>
    /// <param name="end"></param>
    private void StartScan()
    {
                  在这里加上执行操作的代码吗?                       
    }
      

  5.   

    Teng_s2000,你好啊,我这些都有一些了解,也看过一些资料,可是还是不够全面。你能给个小例子吗?