zoukankan      html  css  js  c++  java
  • asp.net 线程 (单)

    public class Global : System.Web.HttpApplication
        {
            public System.Threading.Thread schedulerThread = null;
            public void Task()
            {
                var config = new TaskScheduler.SchedulerConfiguration(1000 *60*15);
                config.Jobs.Add(new TaskScheduler.Method1());
                config.Jobs.Add(new TaskScheduler.Method2());
                var scheduler = new TaskScheduler.Scheduler(config);
                var myThreadStart = new System.Threading.ThreadStart(scheduler.Start);
                var schedulerThread = new System.Threading.Thread(myThreadStart);
                schedulerThread.Start();
            }
            protected void Application_Start(object sender, EventArgs e)
            {
                Task();
            }
    
            protected void Session_Start(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_BeginRequest(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_AuthenticateRequest(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_Error(object sender, EventArgs e)
            {
                //System.Threading.Thread.Sleep(1000);
                //string url = "";
                //System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
                //System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
                //Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
            }
    
            protected void Session_End(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_End(object sender, EventArgs e)
            {
              
                if (null != schedulerThread)
                {
                    schedulerThread.Abort();
                }
               // System.Threading.Thread.Sleep(1000);
               // string url = "";
               // System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
               // System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
               //Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
            }
        }

    程序启动时调用线程;

      public partial class TaskScheduler
        {
            /// <summary>
            /// 执行方法接口
            /// </summary>
            public interface ISchedulerJob
            {
                /// <summary>
                /// 执行方法
                /// </summary>
                void Execute();
            }
            public static string MapPath(string strPath)  
    {  
        if (System.Web.HttpContext.Current != null)  
        {  
            return System.Web.HttpContext.Current.Server.MapPath(strPath);  
        }  
        else //非web程序引用   
        {  
            strPath = strPath.Replace("/", "");  
            strPath = strPath.Replace("~","");  
            if (strPath.StartsWith("//"))  
            {  
                strPath = strPath.TrimStart('/');  
            }  
            return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);  
        }  
            }
            /// <summary>
            /// 任务sample1
            /// </summary>
            public class Method1 : ISchedulerJob
            {
                public void Execute()
                {
                    //需要定时执行的方法1
                    //文件保存的物理路径,CSTest为虚拟目录名称,F:/Inetpub/wwwroot/CSTest为物理路径                    
                    //string p = System.Web.HttpContext.Current.Server.MapPath("../"); 
    
                    string p = MapPath("/");
                    //我们在虚拟目录的根目录下建立SchedulerJob文件夹,并设置权限为匿名可修改,    
                    //SchedulerJob.txt就是我们所写的文件    
                    string FILE_NAME = p + "XTGL/SchedulerJob.txt";
                    //取得当前服务器时间,并转换成字符串    
                    string c = System.DateTime.Now.ToString();
                    //标记是否是新建文件的标量    
                    bool flag = false;
                    //如果文件不存在,就新建该文件    
                    if (!File.Exists(FILE_NAME))
                    {
                        flag = true;
                       
                        StreamWriter sr = File.CreateText(FILE_NAME);
                        sr.Close();
                    }
    
    
                    DateTime data = Convert.ToDateTime("23:40");
                    DateTime dataNow = Convert.ToDateTime(System.DateTime.Now);
                    TimeSpan ts = dataNow - data;
                    //时间差的绝对值
                    String spanTime = ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "" + ts.Seconds.ToString() + "";
                   TimeSpan ts1= ts.Duration();
                   Double spanTime1 = ts1.TotalMinutes;
                    if (spanTime1 < 7.5 )
                    //向文件写入内容  
                    {
                        StreamWriter x = new StreamWriter(FILE_NAME, true, System.Text.Encoding.Default);
                        if (flag) x.Write("计划任务测试开始:");
                        x.Write("/r/n" + c + "正常计算平均值("+spanTime1+")");
    
                        x.Close();
                        pjfInit();
                    }
                    else
                    {
                        StreamWriter x = new StreamWriter(FILE_NAME, true, System.Text.Encoding.Default);
                        if (flag) x.Write("计划任务测试开始:");
                        x.Write("/r/n" + c + "时间未到,线程正常,任务准备中(" + spanTime1 + ")");
    
                        x.Close();
                    }
                    
                }
            }
            /// <summary>
            /// 任务sample2
            /// </summary>
            public class Method2 : ISchedulerJob
            {
                public void Execute()
                {
                    //需要定时执行的方法2
                }
            }
            // 接下来,我们建立一个配置对象,告诉调度引擎执行什么任务和执行的时间间隔。
            /// <summary>
            /// 
            /// </summary>
            public class SchedulerConfiguration
            {
                //时间间隔
                //任务列表
                /// <summary>
                /// 
                /// </summary>
                private readonly ArrayList jobs = new ArrayList();
    
                /// <summary>
                /// 线程睡眠时间设置
                /// </summary>
                /// <value>The sleep interval.</value>
                public int SleepInterval { get; private set; }
    
                /// <summary>
                /// 需完成的工作列表
                /// </summary>
                /// <value>The jobs.</value>
                public ArrayList Jobs { get { return jobs; } }
    
                public SchedulerConfiguration(int newSleepInterval)
                {
                    SleepInterval = newSleepInterval;
                }
            }
            public static void pjfInit()
            {
                Sab_hhb_zhb ZHB = new Sab_hhb_zhb();
                Sab_hhb_sfcj_pj sfcj = new Sab_hhb_sfcj_pj();
                Sab_hhB_sfcjtype sfcjType = new Sab_hhB_sfcjtype();
                Sab_hhb_gzpj_pj gzpj = new Sab_hhb_gzpj_pj();
                Sab_hhb_gfpj_pj gfpj = new Sab_hhb_gfpj_pj();
                Sab_hhb_pfbz pfbz = new Sab_hhb_pfbz();
                jgdx jgDal = new jgdx();
                List<jgdxDS> jgModel = jgDal.GetModelList("(isdelete=0 or isdelete is null)");
                for (int i = 0; i < jgModel.Count; i++)
                {
                    #region  ExtensionMethod
                    //综合榜算法,现根据mid查新公众评价,官方评价,示范创建的得分情况
                    //再跟评分标准中的比例进行计算
    
                    DataSet ds = ZHB.GetList("mid='" + jgModel[i].mid + "'");
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        int gzdf = 0, gfdf = 0, sfdf = 0;
                        int id = ConvertHelper.GetInteger(ds.Tables[0].Rows[0]["id"].ToString());
                        Sab_hhb_zhbDS zhbmodel = ZHB.GetModel(id);
                        DataSet gfpjds = gfpj.GetList("mid='" + jgModel[i].mid + "'");
                        if (gfpjds.Tables[0].Rows.Count > 0)
                        {
                            gfdf = ConvertHelper.GetInteger(gfpjds.Tables[0].Rows[0]["Pjdf"].ToString());
                        }
    
                        DataSet gzpjds = gzpj.GetList("mid='" + jgModel[i].mid + "'");
                        if (gzpjds.Tables[0].Rows.Count > 0)
                        {
                            gzdf = ConvertHelper.GetInteger(gzpjds.Tables[0].Rows[0]["pjdf"].ToString());
                        }
    
                        DataSet sfcjds = sfcj.GetList("mid='" + jgModel[i].mid + "'");
                        if (sfcjds.Tables[0].Rows.Count > 0)
                        {
                            int sfcjTypeID = ConvertHelper.GetInteger(sfcjds.Tables[0].Rows[0]["pjjbID"].ToString());
                            Sab_hhB_sfcjtypeDS sfcjTypemodel = sfcjType.GetModel(sfcjTypeID);
                            sfdf = sfcjTypemodel.pjdf;
                        }
    
    
                        //评分标准算法
                        DataSet pfbzds = pfbz.GetList("LeiMing='评分标准'");
                        int Zdf;
                        if (pfbzds.Tables[0].Rows.Count > 0)
                        {
                            int ID = ConvertHelper.GetInteger(pfbzds.Tables[0].Rows[0]["ID"].ToString());
                            Sab_hhb_pfbzDS model = pfbz.GetModel(ID);
    
                            Zdf = (gfdf * model.gfpjBiLi + gzdf * model.gzpjBiLi + sfdf * model.sfcjBiLi) / 100;
                        }
                        else
                        {
                            Zdf = (gzdf + gfdf + sfdf) / 3;
                        }
                        if (zhbmodel.pjdf > Zdf)
                        {
                            zhbmodel.pjqs = 0;
                        }
                        if (zhbmodel.pjdf == Zdf)
                        {
                            zhbmodel.pjqs = 1;
                        }
                        if (zhbmodel.pjdf < Zdf)
                        {
                            zhbmodel.pjqs = 2;
                        }
    
                        zhbmodel.pjdf = Zdf;
                        zhbmodel.isDelete = 0;
                        ZHB.Update(zhbmodel);
                    }
                    else
                    {
                        int gzdf = 0, gfdf = 0, sfdf = 0;
                        Sab_hhb_zhbDS model = new Sab_hhb_zhbDS();
                        DataSet gfpjds = gfpj.GetList("mid='" + jgModel[i].mid + "'");
                        if (gfpjds.Tables[0].Rows.Count > 0)
                        {
                            gfdf = ConvertHelper.GetInteger(gfpjds.Tables[0].Rows[0]["Pjdf"].ToString());
                        }
    
                        DataSet gzpjds = gzpj.GetList("mid='" + jgModel[i].mid + "'");
                        if (gzpjds.Tables[0].Rows.Count > 0)
                        {
                            gzdf = ConvertHelper.GetInteger(gzpjds.Tables[0].Rows[0]["pjdf"].ToString());
                        }
    
                        DataSet sfcjds = sfcj.GetList("mid='" + jgModel[i].mid + "'");
                        if (sfcjds.Tables[0].Rows.Count > 0)
                        {
                            int sfcjTypeID = ConvertHelper.GetInteger(sfcjds.Tables[0].Rows[0]["pjjbID"].ToString());
                            Sab_hhB_sfcjtypeDS sfcjTypemodel = sfcjType.GetModel(sfcjTypeID);
                            sfdf = sfcjTypemodel.pjdf;
                        }
    
                        //评分标准算法
                        DataSet pfbzds = pfbz.GetList("LeiMing='评分标准'");
                        int Zdf;
                        if (pfbzds.Tables[0].Rows.Count > 0)
                        {
                            int ID = ConvertHelper.GetInteger(pfbzds.Tables[0].Rows[0]["ID"].ToString());
                            Sab_hhb_pfbzDS modelpfbz = pfbz.GetModel(ID);
    
                            Zdf = (gfdf * modelpfbz.gfpjBiLi + gzdf * modelpfbz.gzpjBiLi + sfdf * modelpfbz.sfcjBiLi) / 100;
                        }
                        else
                        {
                            Zdf = (gzdf + gfdf + sfdf) / 3;
                        }
                        model.pjqs = 1;
                        model.pjdf = Zdf;
                        model.isDelete = 0;
                        model.mid = jgModel[i].mid;
                        ZHB.Add(model);
                    }
                    #endregion  ExtensionMethod
                }
    
            }
            //下面就是调度引擎,定时执行配置对象的任务
            /// <summary>
            /// 
            /// </summary>
            public class Scheduler
            {
                /// <summary>
                /// 
                /// </summary>
                private readonly SchedulerConfiguration configuration;
    
                /// <summary>
                /// Initializes a new instance of the <see cref="Scheduler"/> class.
                /// </summary>
                /// <param name="config">The config.</param>
                public Scheduler(SchedulerConfiguration config)
                {
                    configuration = config;
                }
    
                /// <summary>
                /// Starts this instance.
                /// </summary>
                public void Start()
                {
                    while (true)
                    {
                        //执行每一个任务
                        foreach (ISchedulerJob job in configuration.Jobs)
                        {
                            var myThreadDelegate = new ThreadStart(job.Execute);
                            var myThread = new Thread(myThreadDelegate);
                            myThread.Start();
                        }
                        Thread.Sleep(configuration.SleepInterval);
                    }
                }
               
            }
        }

    线程方法;技术不深,暂时不知有何问题,记录下自己查看,有高人请指导。

  • 相关阅读:
    [SAP ABAP开发技术总结]OLE
    [SAP ABAP开发技术总结]ABAP读写、解析XML文件
    [SAP ABAP开发技术总结]FTP到文件服务器,服务器上文件读写
    [SAP ABAP开发技术总结]Function远程、同步、异步调用
    [SAP ABAP开发技术总结]采购、销售、生产简单业务流程
    [SAP ABAP开发技术总结]IDoc
    [SAP ABAP开发技术总结]BAPI调用
    [SAP ABAP开发技术总结]业务对象和BAPI
    [SAP ABAP开发技术总结]增强Enhancement
    [SAP ABAP开发技术总结]SD销售订单定价过程
  • 原文地址:https://www.cnblogs.com/njccqx/p/6413668.html
Copyright © 2011-2022 走看看