我想做到一段代码2小时执行一次.本来以为timer控件就可以了,但是后来发现interval的值最大只能到1分多钟.大家对这个有什么办法解决呢?!

解决方案 »

  1.   

    timer完全可以了,比如设置interval为60000,你可以定义一个变量,每执行一次timer事件,给变量加1,当变量等于120时,不就表示到了2小时了吗
      

  2.   

    Option ExplicitEnum eztmStyle
        eztmStop = 0
        eztmTimerRunning = 1
        eztmPause = 2
    End Enum'Default Property Values:
    Const m_def_IntervalHour = 0
    Const m_def_IntervalMinute = 0
    Const m_def_IntervalSecond = 0
    Const m_def_TimerState = 0'Property Variables:
    Dim m_IntervalHour As Long
    Dim m_IntervalMinute As Long
    Dim m_IntervalSecond As Long
    Dim m_TimerState As eztmStyleDim MMTimer As Long
    Dim TimerSec As Long
    Dim bPause As Boolean'Event Declarations:
    Event CountDown(ByVal Hours As Long, ByVal Minutes As Long, ByVal Seconds As Long)
    Event Timer()
    Event OnStart()
    Event OnStop()
    Event OnPause(ByVal State As eztmStyle)Private Sub SetTimerValue()
        bPause = True
        TimerSec = (m_IntervalHour * 60 ^ 2 + m_IntervalMinute * 60 + m_IntervalSecond) * 2
        If Not Ambient.UserMode Then Exit Sub
        Call ReStart
    End Sub'牡! ちづ簿埃┪э爹秆︽!
    'MappingInfo=UserControl,UserControl,-1,Enabled
    Public Property Get Enabled() As Boolean
        Enabled = UserControl.Enabled
    End PropertyPublic Property Let Enabled(ByVal New_Enabled As Boolean)
        UserControl.Enabled() = New_Enabled
        PropertyChanged "Enabled"
        tmrMain.Enabled = New_Enabled
    End Property'牡! ちづ簿埃┪э爹秆︽!
    'MemberInfo=8,0,0,0
    Public Property Get IntervalHour() As Long
        IntervalHour = m_IntervalHour
    End PropertyPublic Property Let IntervalHour(ByVal New_IntervalHour As Long)
        m_IntervalHour = New_IntervalHour
        PropertyChanged "IntervalHour"
        Call SetTimerValue
    End Property'牡! ちづ簿埃┪э爹秆︽!
    'MemberInfo=8,0,0,0
    Public Property Get IntervalMinute() As Long
        IntervalMinute = m_IntervalMinute
    End PropertyPublic Property Let IntervalMinute(ByVal New_IntervalMinute As Long)
        m_IntervalMinute = New_IntervalMinute
        PropertyChanged "IntervalMinute"
        Call SetTimerValue
    End Property'牡! ちづ簿埃┪э爹秆︽!
    'MemberInfo=8,0,0,0
    Public Property Get IntervalSecond() As Long
        IntervalSecond = m_IntervalSecond
    End PropertyPublic Property Let IntervalSecond(ByVal New_IntervalSecond As Long)
        m_IntervalSecond = New_IntervalSecond
        PropertyChanged "IntervalSecond"
        Call SetTimerValue
    End PropertyPublic Sub TimerPause()
        If m_TimerState = eztmStop Then Exit Sub
        bPause = Not bPause
        tmrMain.Enabled = Not bPause
        If bPause Then
            m_TimerState = eztmPause
        Else
            m_TimerState = eztmTimerRunning
        End If
        RaiseEvent OnPause(m_TimerState)
    End SubPublic Sub ReStart()
        bPause = False
        tmrMain.Enabled = True
        RaiseEvent OnStart
    End SubPublic Sub TimerStart()
        If m_TimerState <> eztmStop Or TimerSec = 0 Then Exit Sub
        m_TimerState = eztmTimerRunning
        bPause = False
        tmrMain.Enabled = True
        RaiseEvent OnStart
    End SubPublic Sub TimerStop()
        m_TimerState = eztmStop
        tmrMain.Enabled = False
        RaiseEvent OnStop
    End SubPublic Function GetTimer() As Long
        GetTimer = (TimerSec - MMTimer) \ 2
    End FunctionFriend Function eztTimerState() As eztmStyle
        eztTimerState = m_TimerState
    End Function'牡! ちづ簿埃┪э爹秆︽!
    'MemberInfo=7,0,0,0
    Public Property Get TimerState() As eztmStyle
        TimerState = m_TimerState
    End PropertyPublic Property Let TimerState(ByVal New_TimerState As eztmStyle)
        m_TimerState = New_TimerState
        PropertyChanged "TimerState"
    End PropertyPrivate Sub tmrMain_Timer()
        Dim LastSec As Long
        If TimerSec <= 0 Then Exit Sub
        MMTimer = (MMTimer + 1) Mod TimerSec
        LastSec = (TimerSec - MMTimer) \ 2
        If MMTimer Mod 2 = 0 Then RaiseEvent CountDown(LastSec \ 60 ^ 2, LastSec \ 60 Mod 60, LastSec Mod 60)
        If MMTimer = 0 Then RaiseEvent Timer
    End Sub'﹍てㄏノ北兜妮┦
    Private Sub UserControl_InitProperties()
        m_IntervalHour = m_def_IntervalHour
        m_IntervalMinute = m_def_IntervalMinute
        m_IntervalSecond = m_def_IntervalSecond
        m_TimerState = m_def_TimerState
    End Sub'パ纗跋更妮┦
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
        UserControl.Enabled = PropBag.ReadProperty("Enabled", True)
        m_IntervalHour = PropBag.ReadProperty("IntervalHour", m_def_IntervalHour)
        m_IntervalMinute = PropBag.ReadProperty("IntervalMinute", m_def_IntervalMinute)
        m_IntervalSecond = PropBag.ReadProperty("IntervalSecond", m_def_IntervalSecond)
        m_TimerState = PropBag.ReadProperty("TimerState", m_def_TimerState)
        TimerSec = (m_IntervalHour * 60 ^ 2 + m_IntervalMinute * 60 + m_IntervalSecond) * 2
        tmrMain.Enabled = Ambient.UserMode
    End SubPrivate Sub UserControl_Resize()
        UserControl.Width = Screen.TwipsPerPixelX * 32
        UserControl.Height = Screen.TwipsPerPixelY * 32
    End SubPrivate Sub UserControl_Terminate()
        m_TimerState = eztmStop
    End Sub'盢妮┦糶纗跋
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
        Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True)
        Call PropBag.WriteProperty("IntervalHour", m_IntervalHour, m_def_IntervalHour)
        Call PropBag.WriteProperty("IntervalMinute", m_IntervalMinute, m_def_IntervalMinute)
        Call PropBag.WriteProperty("IntervalSecond", m_IntervalSecond, m_def_IntervalSecond)
        Call PropBag.WriteProperty("TimerState", m_TimerState, m_def_TimerState)
    End Sub
      

  3.   

    你可以把间隔设置到最大,然后在Time的时间里写几个内部嵌套的循环不就行了吗?具体循环多长,你可以自己算一下,应该不是很麻烦的
      

  4.   

    UP~~~~~~~~
    ----------------------
    《CSDN论坛新助手 CSDN's forum Explorer》
    1、更快速的浏览
    2、更方便地保存
    3、更快捷的收/发短信
    下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
    更多说明:http://community.csdn.net/Expert/TopicView.asp?id=3255966