文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>windows service 调度控制

windows service 调度控制

时间:2011-03-06  来源:醉,只为你

  

 1         List<MyTimer> list = null;
 2         string[] assmebles = { "Demo.Class1,Class1", "Demo.Class2,Class2" };
 3 
 4         public Service1()
 5         {
 6             InitializeComponent();
 7 
 8             Init();
 9         }
10 
11         /// <summary>
12         /// 根据注册的类库,来初始化相应的timer
13         /// </summary>
14         private void Init()
15         {
16             list = new List<MyTimer>();
17             MyTimer timer = null;
18 
19             foreach (var item in assmebles)
20             {
21                 timer = new MyTimer()
22                 {
23                     Enabled = false,
24                     AutoReset = true,
25                     Interval = 1000,
26                 };
27                 timer.Paramas = item;
28                 timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
29                 this.list.Add(timer);
30             }
31         }
32 
33         /// <summary>
34         /// 功能实现
35         /// </summary>
36         /// <param name="sender"></param>
37         /// <param name="e"></param>
38         void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
39         {
40             try
41             {
42                 InterFace.IWindowsService i = null;
43                 MyTimer timer = sender as MyTimer;
44                 i = Activator.CreateInstance(System.Type.GetType(timer.Paramas)) as InterFace.IWindowsService;
45                 if (null == i)
46                 {
47                     WriteLog("找不到类型" + timer.Paramas);
48                     return;
49                 }
50                 if (i.Interval > 0)
51                     timer.Interval = i.Interval;
52                 i.Exe();
53             }
54             catch (Exception ex)
55             {
56                 WriteLog(ex.Message);
57             }
58         }

以上代码就完成了根据注册的类库信息,初始化了相应的Timer。在实际应用中assmebles  中的信息会保存在数据库中,在以后需要再编写服务来完成时,只需继承InterFace.IWindowsService 接口编写代码即可,这个调度中心会自动调用 子类中的 Exe()方法。

下面是接口代码 在服务开始、停止的控制

 

  /// <summary>
        /// 日志
        /// </summary>
        /// <param name="log"></param>
        private void WriteLog(string log)
        {
            FileStream fs = new FileStream("c:\\test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            StreamWriter sw = new StreamWriter(fs);
            sw.BaseStream.Seek(0, SeekOrigin.End);
            sw.WriteLine(DateTime.Now.ToString() + "-----" + log);
            sw.Flush();
            fs.Close();
        }

        protected override void OnStart(string[] args)
        {
            WriteLog("服务启动");

            //服务启动
            foreach (var item in list)
            {
                item.Enabled = true;
                item.Start();
            }
        }

        protected override void OnStop()
        {
            foreach (var item in list)
            {
                item.Enabled = false;
                item.Stop();
            }
            WriteLog("服务停止");
        }
    }

    public class MyTimer : System.Timers.Timer
    {
        public string Paramas { get; set; }
    }


namespace InterFace
{
    public interface IWindowsService
    {
        void Exe();
        double Interval { get; set; }
    }
}
/Files/liuyuedeyv/ServiceFactory.rar

 

相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载