程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第十四講 基於動態編譯的VB.NET腳本引擎(上)(13)

C#發現之旅第十四講 基於動態編譯的VB.NET腳本引擎(上)(13)

編輯:關於C語言

延時調用和定時調用

在Window全 局對象中,筆者使用System.Windows.Forms.Timer對象實現了延時調用和定時調用,由於定 時器對象屬於用戶互換相關的功能,因此延時調用和定時調用受到UserInteractive屬性的影 響。筆者使用以下代碼來實現延時調用的功能

private string  strTimeoutMethod = null;
private System.Windows.Forms.Timer myTimer;
/// <summary>
/// 設置延時調用
/// </summary>
///  <param name="MinSecend">延時的毫秒數</param>
/// <param  name="MethodName">調用的方法名稱</param>
public void SetTimeout (int MinSecend, string MethodName)
{
    // 若不支持和用戶互換 則本功能無效
    if ( bolUserInteractive == false)
         return;
    if (myEngine == null)
        return;
    if (myIntervalTimer != null)
    {
        //  取消當前的演示處理
        myIntervalTimer.Stop();
    }
    strTimerIntervalMethod = null;
    if (myTimer ==  null)
    {
        // 若定時器不存在則創建新的定時器對象
        myTimer = new System.Windows.Forms.Timer();
         myTimer.Tick += new EventHandler(myTimer_Tick);
    }
    // 設置定時器
    myTimer.Interval = MinSecend;
     // 設置腳本方法名稱
    strTimeoutMethod = MethodName;
     // 啟動定時器
    myTimer.Start();
}
///  <summary>
/// 清除延時調用
/// </summary>
public  void ClearTimeout()
{
    if (myTimer != null)
     {
        // 停止定時器
        myTimer.Stop();
    }
    // 清空延時調用的腳本方法名稱
     strTimeoutMethod = null;
}

/// <summary>
/// 延時 調用的定時器事件處理
/// </summary>
/// <param  name="sender"></param>
/// <param  name="e"></param>
private void myTimer_Tick(object sender,  EventArgs e)
{
    myTimer.Stop();
    if (myEngine !=  null && strTimeoutMethod != null)
    {
         // 獲得腳本方法
        string m = strTimeoutMethod.Trim ();
        strTimeoutMethod = null;
        if  (myEngine.HasMethod(m))
        {
            //  若腳本引擎中定義了該名稱的腳本方法則安全的執行該腳本方法
             myEngine.ExecuteSub(m);
        }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved