当前位置:  编程技术>.net/c#/asp.net

C#中Timer的简单范例(System.Windows.Forms.Timer)

    来源: 互联网  发布时间:2014-08-30

    本文导语:  有时希望在指定某時間後, 系統再來呼叫我們指定的函式。 例如: 顯示某一個字串後, 過 5 秒後,自動清除以保持版面清潔的設計. 這時候, 就可以使用方便簡單的 System.Windows.Forms.Timer 這個元件. System.Windoes.Forms.Timer 類別的設計原...

有时希望在指定某時間後, 系統再來呼叫我們指定的函式。
例如: 顯示某一個字串後, 過 5 秒後,自動清除以保持版面清潔的設計. 這時候, 就可以使用方便簡單的 System.Windows.Forms.Timer 這個元件.

System.Windoes.Forms.Timer 類別的設計原理是當時間到了, 送一個時間到了的事件到 UI Message Queue 中.

單一 thread 設計 -- 避免了存取共同變數的問題
所以基本上, 是只有一個 thread 執行的設計. 這樣的設計導致了程式設計模型上的簡化。
因為直接使用 UI Message Queue 來傳達"時間到了"這樣的訊息,使得單一 thread 下, 還能顧及其他事件的處理。

最好的例子就是: 同時顯示程式的狀態在視窗上, 又能讓使用者自由的操作視窗.
這樣的設計, 可以讓使用者以為同時有多個程式正在進行工作.
而事實上呢, 只有一條 thread 執行工作

這樣簡單且幽雅的設計, 可以讓程式設計師, 不必考慮多重執行緒下, 令人頭痛的同步問題.
這表示你可以自由的存取任何 Form 上視覺元件上的成員資料,

而在使用者端, 幾乎可以立即看到改變的結果.
 
最簡單範例: 指定一個字串, 然後在指定的秒數後, 自動清除. 在這期間, 使用者完全可以操作視窗.
使用方法:
 

// 顯示 "目前正在進行版本檢查 .. 字串, 在 4 秒後自動清除
MessageManager.ShowInformation(this.label3, "目前正在進行版本檢查 ...", 4000);

代码如下:
 

代码示例:

class MessageManager {
class MessageTimer : System.Windows.Forms.Timer
{
            public System.Windows.Forms.Label InfoLabel;
            string strMessage;

            public MessageTimer(System.Windows.Forms.Label InfoLabel, string strMessage, int mil_sec)
            {
                this.InfoLabel = InfoLabel;
                this.strMessage = strMessage;
              
              
                Interval = mil_sec;
            }
        }

 // 顯示訊息公用程式 (指定顯示秒數)
        public static void ShowInformation(System.Windows.Forms.Label InfoLabel, string strMessage,int mil_sec)
        {
            InfoLabel.Text = strMessage; // 立即顯示
            MessageTimer myMessageTimer = new MessageTimer(InfoLabel, strMessage, mil_sec);
            myMessageTimer.Tick += new EventHandler(ShowMessage_TimerEventProcessor);
            myMessageTimer.Start(); // 自動清除計時開始
           
        }

        // 清除顯示訊息專用函式
        private static void ShowMessage_TimerEventProcessor(Object sender, EventArgs e)
        {
            MessageTimer MessageTimer = (MessageTimer)sender;
            MessageTimer.Stop(); // 停止計時
            MessageTimer.InfoLabel.Text  = "               ";
        }
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util类timer的类成员方法: timer定义及介绍
  • 在编写驱动程序的时候,timer处理中,遇到了其他某timer处理例程以外的代码的执行。请指点,各位
  • java命名空间javax.management.timer类timer的类成员方法: stop定义及介绍
  • 关于__mod_timer函数(linux/kernel/timer.c中定义的)的问题
  • java命名空间javax.management.timer类timer的类成员方法: removeallnotifications定义及介绍
  • Applet中定时用线程定时,还是用Timer定时比较好????
  • java命名空间javax.management.timer类timer的类成员方法: getnbnotifications定义及介绍
  • jQuery 计时器插件 jQuery Timer
  • java命名空间javax.management.timer类timer的类成员方法: postderegister定义及介绍
  • java.util中的Timer和TimerTask类
  • java命名空间javax.management.timer类timer的类成员方法: isempty定义及介绍
  • 有关timer_list结构的问题
  • java命名空间javax.management.timer类timer的类成员方法: one_day定义及介绍
  • 如何注册Timer中断
  • java命名空间javax.management.timer类timer的类成员方法: one_hour定义及介绍
  • 问一个timer的问题
  • java命名空间javax.management.timer类timer的类成员方法: one_minute定义及介绍
  • java 实现 vb中timer控件的功能?
  • java命名空间javax.management.timer类timer的类成员方法: prederegister定义及介绍
  • 线程内如何实现timer功能?
  • java命名空间javax.management.timer类timer的类成员方法: one_second定义及介绍
  • Android站立会议时间控制软件 Standup Timer


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3