Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
尚未分类 LINQ教程 Enterprise技术 性能优化/调试 水晶报表与打印 安全与加密 图形图像 文件处理 基础教程 Web Services 内置对象 控件示例 正则表达式\采集 ADO.NET 缓存\泛型\线程 XML技术 Url重写\静态页 vs2008综合教程
当前位置: 主页 > ASP.NET教程 > 尚未分类 >

ASP.NET定时器使用实例详解

时间:2010-01-11 13:19来源:未知 作者:admin 点击:

下面代码都是实现每过2秒刷新显示当前数据库的对象,分别使用三种计时器: 

1、Winform 的计时器(System.Windows.Forms.Timer)

      Forms.Timer为单线程计时器,依赖当前窗体.使用最简单:
public partial class Form1 : Form
    {
        System.Windows.Forms.Timer t;

        
public Form1()
        {
            InitializeComponent();
        }

        
private void Form1_Load(object sender, EventArgs e)
        {
            t 
= new System.Windows.Forms.Timer();
            t.Interval 
= 2000;//间隔时间
            t.Enabled = true;
            t.Tick 
+= new EventHandler(timersTimer_Elapsed);
            t.Start();
        }

        
private void timersTimer_Elapsed(object source, EventArgs e)
        {
            DataSet ds 
= new DataSet();
            SqlDataAdapter sda 
= new SqlDataAdapter(
                      
"select * from sysobjects order by newid()"
                      
"server=.;uid=sa;pwd=sa;database=master;");
            sda.Fill(ds);
            sda.Dispose();
            dataGridView1.DataSource 
= ds.Tables[0].DefaultView;
        }
    }

public partial class Form1 : Form
    {
        System.Threading.Timer t;
        
delegate void BindDataSourceCallback(DataSet ds);

        
public Form1()
        {
            InitializeComponent();
        }

        
private void Form1_Load(object sender, EventArgs e)
        {
            t 
= new System.Threading.Timer(
                  
new System.Threading.TimerCallback(timersTimer_Elapsed), 
                  
null02000);//间隔2秒
        }

        
private void timersTimer_Elapsed(object source)
        {
            DataSet ds 
= new DataSet();
            SqlDataAdapter sda 
= new SqlDataAdapter(
                    
"select * from sysobjects order by newid()",
                    
"server=.;uid=sa;pwd=sa;database=master;");
            sda.Fill(ds);
            sda.Dispose();
            BindDataSourceCallback temp 
= new BindDataSourceCallback(bindData);
            
this.Invoke(temp, new object[] { ds });
        }

        
private void bindData(DataSet ds)
        {
            dataGridView1.DataSource 
= ds.Tables[0].DefaultView;
            dataGridView1.Refresh();
        }
    }


 

 

定时器使用实例

 

3、线程计时器(System.Threading.Timer)

     Threading.Timer也属于多线程计时器,需要使用委托来调用.

 

2、服务器的计时器(System.Timers.Timer)

     该计时器为多线程,不依赖窗体,是从线程唤醒,因为与当前窗体不在同一个线程中 ,所以无法操作当前窗体控件.可将计时器的SynchronizingObject的属性为this,表明线程与当前窗体同步,否则使用委托实现.

public partial class Form1 : Form
    {
        System.Timers.Timer t;
        
delegate void BindDataSourceCallback(DataSet ds);

        
public Form1()
        {
            InitializeComponent();
        }

        
private void Form1_Load(object sender, EventArgs e)
        {
            t 
= new System.Timers.Timer();
            t.Interval 
= 2000;//每2秒刷新一次datagridview
            t.Enabled = true;
            t.Elapsed 
+= new System.Timers.ElapsedEventHandler(timersTimer_Elapsed);
            t.Start();
        }

        
private void timersTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
        {
            DataSet ds 
= new DataSet();
            SqlDataAdapter sda 
= new SqlDataAdapter(
                         
"select * from sysobjects order by newid()",
                         
"server=.;uid=sa;pwd=sa;database=master;");
            sda.Fill(ds);
            sda.Dispose();
            BindDataSourceCallback temp 
= new BindDataSourceCallback(bindData);
            
this.Invoke(temp, new object[] { ds });
        }

        
private void bindData(DataSet ds)
        {
            dataGridView1.DataSource 
= ds.Tables[0].DefaultView;
            dataGridView1.Refresh();
        }
    }

(责任编辑:admin)
Tags:定时器
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价