webform下使用timer计时器_webform timer - CSDN
精华内容
参与话题
  • ASP.Net Ajax框架 Timer控件 计时器

    千次阅读 2017-04-10 18:55:34
     Timer控件和我们以前在Winform中学习的Timer控件类似,  主要通过一个Interval属性和一个Tick事件来实现在一定的间隔时间内完成特定任务的功能    需要控件ScriptManager,Timer 代码实例 ...

    介绍

      Timer控件和我们以前在Winform中学习的Timer控件类似,
            主要通过一个Interval属性和一个Tick事件来实现在一定的间隔时间内完成特定任务的功能
            
            需要控件ScriptManager,Timer


    代码实例
     <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick"></asp:Timer>
        </form>

     public partial class T4 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Label1.Text = DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss");
                }
            }
    
            protected void Timer1_Tick(object sender, EventArgs e)
            {
                Label1.Text = DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss");
            }
        }


    展开全文
  • ASP.NET/C#定时器基本用法

    千次阅读 2018-12-15 15:45:56
    前沿:  定时器这三个词,大家一听都知道什么意思。就像闹钟一样,你设定起床时间,就是开启定时器,当你定的闹铃时间到了就会响起。...第一种:就是窗体(webForm)里有一个定时器的Timer控件...

    前沿:

     定时器这三个词,大家一听都知道什么意思。就像闹钟一样,你设定起床时间,就是开启定时器,当你定的闹铃时间到了就会响起。然后你伸出手“啪的一声关闭”,就是停止定时器。

    在我们程序中定时器还是经常会用的。比如:轮询一个用户的登录状态,等等吧。

    今天主要给大家分享下定时器的基本用法:

    在ASP/C#中常用的定时器有2种:

    第一种:就是窗体(webForm)里有一个定时器的Timer控件,我们可以直接用,不过,现在做开发都不用窗体程序了,因为用窗体写程序,程序会生成好多垃圾代码,影响效率。所以窗体的大家可以没事做个了解。

    第二种:就是微软在VS里Timer类了,这个是我们开发常用的。

    在介绍用法之前先给大家介绍下Timer的一些常用属性

    Timer常用属性

    ①:Elapsed;达到时间间隔时出发你所做的事。

    ②:Interval;设定定时器的时间,多长时间启动一次--以毫秒为单位

    ③:AutoReset:是个bool类型的。为true时,定时器可以一直运行,false时,定时器执行一次。

    ④:Enabled:是bool类型的,为true时,定时器启动,false定时器停止。

    ⑤:Start()与Stop();与Enabled一样的,true相当Start(),false相当于Stop(),二者任写一个就行。

    注意事项:

    ①:Timer ;在实例化定时器的时候,有1个重载,可以直接把执行的时间间隔直接写入,也可以在用Interval进行设置

    System.Timers.Timer timer = new System.Timers.Timer(1000);//设定计时器,1秒进行一次循环
    timer.Interval = 1000;//设置时间(定时器多少秒执行一次--注意是毫秒)
    
    
    二者的作用一样,任选其一

    ②:在设置Elapsed属性的时候在其右边必须时+=或者-=

    timer.Elapsed += new System.Timers.ElapsedEventHandler(Start);
    
    并且ElapsedEventHandler是个委托,括号里必须是一个void无返回值的方法
    这个方法里的参数必须是object和ElapsedEventArgs这2个类型的。
    
    例如:
        //你想实现的功能
        public static void Start(object sender, ElapsedEventArgs e)
            {
              Console.WriteLine(DateTime.Now.ToString()); 
            }
    

    基本的注意的点就这些了:下面是代码实现:

     class Program
        {
            static void Main(string[] args)
            {
                RemenberTime();//调用控制器
                Console.Read();
            }
            public static void RemenberTime()
            {
                System.Timers.Timer timer = new System.Timers.Timer(1000);//设定计时器,1秒进行一次循环
                timer.Elapsed += new System.Timers.ElapsedEventHandler(Start);
                //timer.Interval = 1000;//设置时间(定时器多少秒执行一次--注意是毫秒)
                //System.Timers.Timer timer = new System.Timers.Timer(1000);与上作用一样
                timer.AutoReset = true;//执行多次--false执行一次
                timer.Enabled = true;//执行事件为true,定时器启动
                //timer.Start();//定时器启动Start()这个方法与timer.Enabled = true;作用一样,二者写一个就可以
                //timer.Stop();//定时器停止Stop()这个方法与timer.Enabled = false;作用一样,二者写一个就可以
            }
            public static void Start(object sender, ElapsedEventArgs e)
            {
              Console.WriteLine(DateTime.Now.ToString()); 
            }
    
        }

    执行效果:

    完成!!!

    展开全文
  • 本文主要描述如何在ASP.NET WebForm中实现长轮询: (1)在ASP.NET WebForm的aspx文件中设置如下指令即可实现异步的ASP.NET WebForm: <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="LongPolling....

            本文主要描述如何在ASP.NET WebForm中实现长轮询:

    (1)在ASP.NET WebForm的aspx文件中设置如下指令即可实现异步的ASP.NET WebForm:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LongPolling.aspx.cs" Inherits="LongPolling" Async="true" AsyncTimeout="60" %>
    

    Async:是否异步WebForm,AsyncTimeout:异步超时时间(秒)。

    (2)在aspx.cs文件中实现异步获取数据:

    方式一:超过循环次数即退出(或使用Stopwatch计算时间,超时即退出)

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Web.UI;
    
    public partial class LongPolling : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //注册异步任务
            this.Page.RegisterAsyncTask(new PageAsyncTask(GetData));
        }
    
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        private async Task GetData()
        {
            int nowTimes = 0;//当前循环次数(或使用Stopwatch计算时间,超时即退出)
            int maxTimes = 60;//最大循环次数(或使用Stopwatch计算时间,超时即退出)
            while (++nowTimes <= maxTimes)//(或使用Stopwatch计算时间,超时即退出)
            {
                //判断是否已有新数据,若已有则退出循环并响应
                Thread.Sleep(100);
            }
        }
    }
    

    方式二:使用计时器

    using System;
    using System.Threading.Tasks;
    using System.Web.UI;
    using System.Timers;
    
    public partial class LongPolling : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //注册异步任务
            this.Page.RegisterAsyncTask(new PageAsyncTask(GetData));
        }
    
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        private async Task GetData()
        {
            int nowTimes = 0;//当前循环次数(或使用Stopwatch计算时间,超时即退出)
            int maxTimes = 60;//最大循环次数(或使用Stopwatch计算时间,超时即退出)
    
            //计时器,每1秒种触发一次Elapsed事件
            Timer timer = new Timer(1000);
            //订阅计时器的Elapsed事件    
            timer.Elapsed += (sender, e) =>
            {
                //判断是否已有新数据或超时,若是则停止计时器并响应
            };
            //启动计时器       
            timer.Start();
        }
    }
    

    (3)使用jQuery发送请求:

    (function getData() {
        $.post('LongPolling.aspx', {}, function(data) {
            //接收并处理数据
            getData();
        });
    })();
    展开全文
  • Quartz实例及IIS闲置超时解决方案

    千次阅读 2013-11-18 17:37:30
    要点:Quartz功能,Quartz实例,Iis闲置超时解决方案 在Web应用中常要实现的一个功能就是: 1)某一个功能模块的代码需要定期...那么这个时间就需要一个计时器来执行。但是传统的System.Threading;System.Windows.Form
    要点:Quartz功能,Quartz实例,Iis闲置超时解决方案
    在Web应用中常要实现的一个功能就是:
    1)某一个功能模块的代码需要定期执行一次;
    2)或者像邮件的定时发送功能一样,一到某个时间点就执行一段代码;
    3)每个月最后一周的星期五的18点00分执行一段代码。
    那么这个时间就需要一个计时器来执行。但是传统的System.Threading;System.Windows.Forms.Timer;System.Timers;System.Web.UI.Timer;均不能很好的解决上面所说的第三个功能甚至第二个功能,此时,就可以使用Quartz。
    和众多的插件一样,Quartz也从Java插件而来,不过在.net中的Quartz使用C#语言编写。

    Quartz能做什么?

    1) 每天9点00分执行一段代码;
    2) 2050年每天09点00分执行一段代码;
    3) 每天上午9点到下午18点59分这段时间里每隔10分钟执行一段代码;
    4) 每个月最后一周的星期五的18点00分执行一段代码。
    … …
    以上这些情况都能用Quartz来实现,比起Timer来说,它的时间管理规则强大得多。

    Iis闲置超时

    一种节省系统资源的方法就是为应用程序池中的工作进程配置闲置超时设置。 配置这些设置后,工作进程会在不活动状态持续指定的一段时间后关闭。 默认的闲置超时值为 20 分钟。
    对于它的产生可以简单的理解为:在Web应用程序中,在规定的时间内客户端和服务器没有进行任何一次数据交互,那就会造成 iis闲置超时。
    解决方案
    1)Application_End中重定向到任何一个可以和服务器进行数据交互的网页,如:Response.Redirect("Index.aspx");
    2)另写一个网页,这个网页在iis服务器规定的时间内,定时向服务器取一次数据。
    3)猜想:既然是因为超时造成客户端和服务器断开链接,那么是不是可以利用长连接这种技术来解决呢?(只有一个页面,且不为外界访问,避免过多网页长连接超成服务器资源浪费)
    在方案一中,最大的问题是会造成断开到重连过程中的一个空隙,如果网站越大,30秒到1分钟以上的时间空隙是存在的,时间一长就要手动的断开(关闭iis)再重启(iis);
    在方案二中,不会存在方案一的问题,只是在服务器端,要打开一个网页,然后这个页面在iis闲置超时的时间以内向服务器请求一次数据(注意不是简单的刷新当前页面)。当iis闲置超时为1440,那么这个网站一天有一个访问量就可以保证不会触发到iis闲置超时而执行的资源清理。
    在方案三中,这只是一个猜想,但从长连接来说,最终效果不如方案二。

    在写具体代码之前,先来看看文件列表:


    图一

    具体实施

    新建IndexJob.cs输入以下代码(定时要执行的代码):
    using Quartz;
    using System.IO;
    
    
        public class IndexJob:IJob
        {
            public void Execute(JobExecutionContext context)
            {
                //取当前应用程序路径
                string fileLogPath = AppDomain.CurrentDomain.BaseDirectory;
                string fileNmae = fileLogPath + "QuartzTest.txt";
                if (!File.Exists(fileNmae))
                {
                    FileStream fs = File.Create(fileNmae);
                    fs.Dispose();
                }
                StreamWriter sw = new StreamWriter(fileNmae, true, Encoding.Default);
                sw.Write(DateTime.Now.ToString() + "\r\n");
                sw.Write("--------------------\r\n");
                sw.Flush();//清空缓冲并写入数据
                sw.Close();
                sw.Dispose();
            }
        }
    
    新建QuartzAPI.cs输入以下代码:
    private static readonly QuartzAPI Quartz = new QuartzAPI();
            private QuartzAPI()
            {
                
            }
    
    
            public static QuartzAPI CreateInstance()
            {
                return Quartz;
            }
            public void Start()
            {
                //IScheduler sched;//调度器
                ISchedulerFactory schedulerFactory = new StdSchedulerFactory();//调度工厂
                IScheduler sched = schedulerFactory.GetScheduler();//从工厂中调取一个“调度器”
                JobDetail job = new JobDetail("job1", "group1", typeof(IndexJob));//作业名称,作业组名,作业要执行的类(这个类要继承IJob)
                #region SimpleTrigger
                //DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);
                //TimeSpan interval = TimeSpan.FromSeconds(5);
                //Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts, null,
                //SimpleTrigger.RepeatIndefinitely, interval);
                #endregion
                Trigger trigger = new CronTrigger("aa", "groupaa", "job1", "group1", "0 0-59 15 * * ?"); //触发器名,触发器组名,任务名,任务组名,时间规则。0 0-59 15 * * ? 后面说明
                sched.AddJob(job,true);//为调度器添加任务
                sched.ScheduleJob(trigger);//为调度器添加时间计划
                sched.Start();//启动调度
                //调度器:IScheduler、任务(作业):JobDetail、触发器:Trigger
            }
        }
    把握了调度器:IScheduler、任务(作业):JobDetail、触发器:Trigger,那么使用起来就不难了
    在Global中输入以下代码:
            protected void Application_Start(object sender, EventArgs e)
            {
                QuartzAPI.CreateInstance().Start();//在网站应用程序启动,同时也将定时任务启动起来。
            }
    以上就是Quartz的使用方法,现在要将先前说过的两种iis闲置超时解决方案应用到Quartz中,不然Quartz是没法在项目中实际使用的。

    方案一:

            protected void Application_End(object sender, EventArgs e)
            {
                //方法一:重新建立客户端和服务器之间的连接
                Response.Redirect("WebForm1.aspx");
    
    
                #region 记录日志,可用log4net或省略本行及以下代码
                //取当前应用程序路径
                string fileLogPath = AppDomain.CurrentDomain.BaseDirectory;
                string fileNmae = fileLogPath + "QuartzTest.txt";
                if (!File.Exists(fileNmae))
                {
                    FileStream fs = File.Create(fileNmae);
                    fs.Dispose();
                }
                StreamWriter sw = new StreamWriter(fileNmae, true, Encoding.Default);
                sw.Write(DateTime.Now.ToString() + "运行到此时结束\r\n");
                sw.Write("--------------------\r\n");
                sw.Flush();//清空缓冲并写入数据
                sw.Close();
                sw.Dispose();
                Application_Start(sender, e);
                #endregion
            }
    推荐方案二

    方案二

    新建WebForm1.aspx页面。
    在WebForm1.aspx.cs中输入
        public partial class WebForm1 : System.Web.UI.Page
        {
            //方法一:在iis过期时间内由客户端向服务器请求一次数据,完成客户端和服务器的一次数据交互
            protected string timerStr = string.Empty;
            protected void Page_Load(object sender, EventArgs e)
            {
                timerStr = DateTime.Now.ToString();
            }
        }
    在WebForm1.aspx中输入以下代码
    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            //方法二:在iis过期时间内由客户端向服务器请求一次数据,完成客户端和服务器的一次数据交互
            $(window).load(function () {
                setInterval("sTimeout()", 1000);
                setInterval("mySelfqq()", 3000); //这里设置的时间要比IIS中的要短(当前 iis设置为1分钟过期,即50秒也行)
            });
    
    
            function mySelfqq() {
                window.location.href("WebForm1.aspx");//重加载
            }
    
    
            function sTimeout() {
                var a = Date().toString();
                $("#lb").html(a);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            llll<div id = "lb"></div>lllll<br/>
            <%=timerStr %>//从服务器中最数据
        </div>
        </form>
    </body>

    实例下载地址:

    http://download.csdn.net/detail/z1119815468/6571371

    关于CronTrigger中时间规则的设置可参考:http://hi.baidu.com/yanlong662/item/503e5014dd598c443a176ea0
    展开全文
  • C#定时 定时执行任务 线程

    千次阅读 2016-08-11 11:12:25
    加菲猫 Just have a little faith. C#实现Web应用程序定时启动任务 ... 在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份
  • C#-WebForm JS定时器 JS定时器: 1、window.setTimeout(function(){},3000) 延迟3秒执行 2、window.setInterval(function(){},3000) 也叫重复,每3秒重复相同的事件 关闭定时器: var timer = ...
  • codeproject

    万次阅读 2007-03-26 07:31:00
    ApplicationsCrafting a C# forms Editor From scratchhttp://www.codeproject.com/csharp/SharpFormEditorDemo.asp建立一个类似C#的环境, 实现控件拖拉,属性 Packet Capture and Analayzer网络封包截获...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:10
    C#基础教程-c#实例教程,适合初学者。 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。...
  • .net开发过程中,错误集锦

    千次阅读 2007-08-04 11:18:00
    顺便鄙视移动,对厂家这么刻薄,不能上网,不能带水进去喝,最气人的是,进出大楼,冰火两重天,20度左右的温度.又要项目赶进度,又天天有领导来视察,天天把厂家扫地出门溜达去.2007年 6月 移动项目:1:vs2005上安装vss...
  • Code Project精彩系列

    千次阅读 2011-06-15 23:29:00
    ApplicationsCrafting a C# forms Editor From scratchhttp://www.codeproject.com/csharp/SharpFormEditorDemo.asp建立一个类似C#的环境, 实现控件拖拉,属性Packet Capture and Analayzer网络封包截获...
  • 我用.net做的一个Timer定时器,定时获取短信并给予回复,但大概过了十几个小时以后,Timer定时器会自动停止,再发送短信就不能收到回复,需要在服务器中重新运行定时器才可以,请教各位! 我是在.net framework中的...
  • Code Project

    千次阅读 2011-02-26 21:44:00
    Code Project
  • 从 Visual Basic 6.0 到 Visual Basic.NET 的转换 Microsoft Visual Basic.NET 是 Microsoft Visual Basic© 的后续版本,它是基于 .NET 框架重新设计的,您可以用它来轻松地...使用 Visual Basic.NET,可视化开发 W
  • //++// Timer控件主要会用到2个属性一个是Enabled和Interval//++//Enabled主要是控制当前Timer控件是否可用//++//timer1.Enabled=false;不可用//++//timer1.Enabled=true;可用//++//timer1.Interval=1000;主要是设置...
  • Code Project精彩系列(转)

    千次阅读 2011-10-17 09:51:16
    Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp 建立一个类似C#的环境, 实现控
  • Code Project精彩系列二

    千次阅读 2011-03-16 22:26:00
    Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp建立一个类似C#的环境, 实现控件拖拉,属性 Packet Capture and Analayzer 网络封包截获 ...
  • net开发过程中,错误集锦

    千次阅读 2007-11-06 14:28:00
    2007年 6月 移动项目:1:vs2005上安装vss2005后,不能够显示源代码管理(http://www.cnblogs.com/SGSoft/archive/2007/06/12/780351.html)A:打开菜单中的 Tools->Options 选择 SourceControl->Plug-ins设置为...
  • Timer 控件

    2019-10-08 03:48:13
    Timer控件 Timer控件主要会用到2个属性一个是Enabled和IntervalEnabled主要是控制当前Timer控件是否可用timer1.Enabled=false;不可用timer1.Enabled=true;可用timer1.Interval=1000;主要是设置timer2_Tick事件的...
1 2 3 4 5
收藏数 90
精华内容 36
关键字:

webform下使用timer计时器