• 我写的一个windows服务程序


    主要是调用一个存储过程,在特定的时候查出一个报表,并输出XML。挺简单的。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using System.Data.SqlClient;
    using System.Xml;
    using System.IO;
    using System.Collections;

    namespace StockUpService
    {
        public partial class StockUpService : ServiceBase
        {
            public StockUpService()
            {
                InitializeComponent();

                if (!System.Diagnostics.EventLog.SourceExists("MySource"))
                {
                    System.Diagnostics.EventLog.CreateEventSource(
                        "MySource", "MyNewLog");
                }
                eventLog1.Source = "MySource";
                eventLog1.Log = "MyNewLog";
            }

            protected override void OnStart(string[] args)
            {
                System.Timers.Timer t = new System.Timers.Timer(50000);             //实例化Timer类,设置间隔时间为50000毫秒|50秒执行一次;
                t.Elapsed += new System.Timers.ElapsedEventHandler(runservice);         //到达时间的时候执行事件;
                t.AutoReset = true;                                                 //设置是执行一次(false)还是一直执行(true);
                t.Enabled = true;                                                   //是否执行System.Timers.Timer.Elapsed事件;
            }
            public void runservice(object source, System.Timers.ElapsedEventArgs e)
            {
                string t;
                t = System.DateTime.Now.Hour.ToString()+System.DateTime.Now.Minute.ToString();
                if (t == "51")
                {
                    readXml();
                }
            }

            public static void readXml()
            {
                string classId;
                string filialeId;
                string startTime;
                string endTime;
                string companyType;
                int timeInterval;
                string aa = "";
                string xmlChildNodes = "";
                //string dsn = "server=(local);database=keede1228;user id=sa;password=123;";
                string dsn;           

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("d:\\StockUpConfig.xml");
                XmlNode xn = xmlDoc.SelectSingleNode("stockwarning");
                XmlNodeList xnl = xn.ChildNodes;

                XmlNode xn3 = xmlDoc.SelectSingleNode("stockwarning/goodsclass");
                XmlNodeList xn3l = xn3.ChildNodes;


                foreach (XmlNode xnf in xnl)
                {
                    XmlElement xe = (XmlElement)xnf;
                    XmlNodeList xnf1 = xe.ChildNodes;
                    xmlChildNodes = xmlChildNodes + xnf.InnerText + "|";
                }

                string[] cc = xmlChildNodes.Split('|');
                string outputpath;
                filialeId = cc[1];
                companyType = cc[2];
                timeInterval = Convert.ToInt16(cc[3]);
                outputpath = cc[4];
                dsn = cc[5];
                endTime = DateTime.Now.Date.ToShortDateString();
                startTime = DateTime.Now.AddDays(-timeInterval).ToShortDateString();
                string className;
                int po = 1;
                SqlConnection connection = new SqlConnection(dsn);

                foreach (XmlNode xn3f in xn3l)
                {
                    XmlNode xn2 = xmlDoc.SelectSingleNode("stockwarning/goodsclass/group" + po);
                    XmlNodeList xn2l = xn2.ChildNodes;
                    XmlElement xe = (XmlElement)xn3f;
                    className = xe.GetAttribute("classname");
                    po++;
                    DataSet ds = new DataSet();
                    foreach (XmlNode xn2f in xn2l)
                    {
                        aa = xn2f.InnerText;

                        connection.Open();
                        classId = aa;
                        SqlCommand command = connection.CreateCommand();
                        command.CommandText = "P_Raifei_GetClassGoodsStockUp";
                        command.CommandType = CommandType.StoredProcedure;
                        SqlParameter param1 = new SqlParameter("@ClassId", classId);
                        SqlParameter param2 = new SqlParameter("@FilialeId", filialeId);
                        SqlParameter param3 = new SqlParameter("@StartTime", startTime);
                        SqlParameter param4 = new SqlParameter("@EndTime", endTime);
                        SqlParameter param5 = new SqlParameter("@CompanyType", companyType);
                        command.Parameters.Add(param1);
                        command.Parameters.Add(param2);
                        command.Parameters.Add(param3);
                        command.Parameters.Add(param4);
                        command.Parameters.Add(param5);

                        SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
                        reader.Close();

                        string select = "P_Raifei_GetClassGoodsStockUp" + " " + "'" + classId + "'," + "'" + filialeId + "'," + "'" + startTime + "',"
                            + "'" + endTime + "'," + "'" + companyType + "'";
                        SqlDataAdapter da = new SqlDataAdapter(select, connection);
                        int abc = 1;
                        string tbname;
                        string stockUpName;
                        stockUpName = outputpath + "StockUp" + DateTime.Now.Date.ToShortDateString() + "-" + className + ".xml";
                        tbname = "sp" + abc;
                        abc++;
                        da.Fill(ds, tbname);
                        ds.WriteXml(stockUpName, XmlWriteMode.WriteSchema);

                    }
                }
                connection.Close();
            }

            protected override void OnStop()
            {
                eventLog1.WriteEntry("In onStop.");
            }

            protected override void OnContinue()
            {
                eventLog1.WriteEntry("In OnContinue.");
            } 

        }
    }

  • 相关阅读:
    4-数组、指针与字符串1.3-this指针
    Linux命令----cp
    Linux命令----mv
    Linux命令----rm
    PHP7下的协程实现 转
    php生成器 yield 转
    python并发编程之多进程(实践篇) 转
    python 多进程
    线程创建 线程数
    多任务 执行
  • 原文地址:https://www.cnblogs.com/liuxiuming/p/1659635.html
Copyright © 2020-2023  润新知