tnblog
首页
视频
资源
登录

ASP.NET Timer细节处理

1874人阅读 2018/12/14 11:05 总访问:1874 评论:0 收藏:0 手机
分类: 细节处理


        Timer的用法:

    1:本人称之为计时器,是asp.net官方的一种。用法即是计时所用

    2:关于计时有很多中方式,本人学识有限,暂只有一种分享出来

    3:一般用于监测某个数据库表,某个功能

    4:我这里的是一个监测订单表和库存表,下单通知,和库存预警通知


     Timer的写处:

             1:若有服务即分布式项目的话:可以将Time写在底层服务里亦可以写在Global.asax文件里面

             2:由于我这里的是分布式,所以不写在Service服务里面的


Timer步骤:

       注:需要引入服务ServiceBase,不然此处写法不成功。

        服务应用:当然这些服务是有人已经写好了,可见:https://www.cnblogs.com/endv/p/6978644.html---服务的搭建

            System.Object
??                System.MarshalByRefObject
????                    System.ComponentModel.Component
??????                            System.ServiceProcess.ServiceBase---继承层次

      1:初始化Timer:这里用于全局的,

                               //计时器

                                System.Timers.Timer ordertimer ;


     2:设置 服务启动方法:  protected override void OnStart(string[] args)

            

            ordertimer = new System.Timers.Timer() ;

            ordertimer.Interval = 60000;  //设置计时器事件间隔执行时间--一分钟查一次

            ordertimer.Elapsed += new System.Timers.ElapsedEventHandler(TMStart_Order);--调用方法

            ordertimer.Enabled = true;


3:设置自己的方法

       private void TMStart_Order(object sender, System.Timers.ElapsedEventArgs e)

        {

            //-------------------------------启动订单预警监控服务服务-------------------------------


            logger.Info("启动未支付订单监控");

            //ordertimer.Enabled = true;-------若是ordertimer.Enabled 为true,则会按照设置的  ordertimer.Interval 时间进行执行,若是想要实时查询的话建议设置为false(代表执行一次,建立一个线程),后面会有的。

            Thread OrderManager = new Thread(new ThreadStart(执行方法);

            OrderManager.Start();

         }

4:我的订单执行方法

                

 public void OrderManagerLoop()

        {

            try

            {

                MonitoringTimerOrder();---执行操作数据库,监控表等操作

            }

            catch (ApplicationException ex)

            {

                logger.Error("监控订单待支付,已付款待发货信息异常:" + ex.Message);

            }

        }


我的方法是:不需要实时查询,只需一分钟查一次就可以了。


若是先要实时查询的话:只需加入while即可了,前提是timer创建线程后即禁用timer。


如:

  public void PromotionMonitoringLoop()

        {

--前提是ordertimer.Enabled在方法执行前为false,不然你就等着内存占满,然后凉凉了,此处是一个死循环,进入此循环前需要把timer禁用,不然每隔多少时间就执行一次就有多少个死循环,别说内存了数据库都遭不住这么折腾。

            while (true)

            {

                try

                {

                    PromotionMonitoring();--操作数据库方法

                    Thread.Sleep(1000);--休眠一秒:表示操作不会并发,然后数据库缓和

                }

                catch (ApplicationException ex)

                {

                   logger.Error("监控订单待支付,已付款待发货信息异常:" + ex.Message);

                    Thread.Sleep(1000);

                }

            }

        }



唉,不说了。都是泪,一句话:细心总是好的,希望大家不要学我了。特别强调都是由于我的粗心而掉下的坑,吃黄连去了




评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

cAPS.net 保存base64位格式的图片

publicvoidUpload() { //取出图片对应的base64位字符 stringimgBase=Request["imgBase"]; //c#里边的base6...

Quartz.net实例动态改变周期调度。misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.net Windows服务发布、安装、卸载、监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

c、VB.net中全角半角转换方法

///<summary> ///转全角的函数(SBCcase) ///</summary> ///<paramname="input">任意字符串...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial("_分部页")第二种:@{ Html.RenderPartial("分部页");}...

C.net 配合小程序实现经过第三方服务器中转文件

某些时候,微信小程序前段上传文件的时候需要经过第三方服务器再将文件上传到客户的服务器;操作如下:1:(小程序内向中端服...

.net实现QQ邮箱发送邮件功能

1、微软已经帮我们封装好了发送邮件的类MailMessage,MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。Mai...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

windows 自带的netsh进行端口映射

使用netsh 把本地任意ip的25566端口 映射到192.168.81.234的25565端口netshinterfaceportproxyaddv4tov4listenaddress=0.0....

确保.net程序始终以管理员身份运行

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; ...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

通俗易懂,什么是.net?什么是.net Framework?什么是.net core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

asp.net core主要提供了三种依赖注入的方式其中AddTransient与AddSingleton比较好区别AddTransient瞬时模式:每次都获取一...

asp.net主动推送百度seo

虽然可以使用百度提供的js自动推送,但是估计度娘还是希望主动推送一点。哈哈^_^,女孩子嘛大多都喜欢被动一点。publicclass...
擎苍天,踏日月,万古无敌于世间的安澜--- 余陀救我
排名
143
文章
1
粉丝
0
评论
0
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
眼看他起朱楼,眼看他宴宾客,眼看他楼塌了。