Timer.Change Metódus

Definíció

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt.

Túlterhelések

Name Description
Change(Int32, Int32)

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt 32 bites aláírt egész számok használatával az időintervallumok méréséhez.

Change(Int64, Int64)

Az időintervallumok méréséhez 64 bites aláírt egész számok használatával módosítja a kezdési időpontot és a metódushívások közötti időközt.

Change(TimeSpan, TimeSpan)

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt az időintervallumok mérésére szolgáló értékek használatával TimeSpan .

Change(UInt32, UInt32)

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt, 32 bites, aláíratlan egész számokkal méri az időintervallumokat.

Change(Int32, Int32)

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt 32 bites aláírt egész számok használatával az időintervallumok méréséhez.

public:
 bool Change(int dueTime, int period);
public bool Change(int dueTime, int period);
member this.Change : int * int -> bool
Public Function Change (dueTime As Integer, period As Integer) As Boolean

Paraméterek

dueTime
Int32

A visszahívási módszer létrehozásakor Timer megadott visszahívási módszer meghívása előtt késleltetési idő ezredmásodpercben. Adja meg Infinite , hogy az időzítő ne induljon újra. Adja meg a nullát (0) az időzítő azonnali újraindításához.

period
Int32

A visszahívási módszer meghívásai közötti időintervallum, amely a Timer megépítéskor van megadva, ezredmásodpercben. Adja meg Infinite az időszakos jelzés letiltását.

Válaszok

trueha az időzítő frissítése sikeresen megtörtént; egyéb esetben. false

Kivételek

A Timer már el lett dobva.

A dueTime vagy period paraméter negatív, és nem egyenlő .Infinite

Példák

Az alábbi példakód bemutatja, hogyan indíthat el egy meghívást Timer , és egy megadott számú meghívás után módosíthatja annak időtartamát.

using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        // Create an AutoResetEvent to signal the timeout threshold in the
        // timer callback has been reached.
        var autoEvent = new AutoResetEvent(false);
        
        var statusChecker = new StatusChecker(10);

        // Create a timer that invokes CheckStatus after one second, 
        // and every 1/4 second thereafter.
        Console.WriteLine("{0:h:mm:ss.fff} Creating timer.\n", 
                          DateTime.Now);
        var stateTimer = new Timer(statusChecker.CheckStatus, 
                                   autoEvent, 1000, 250);

        // When autoEvent signals, change the period to every half second.
        autoEvent.WaitOne();
        stateTimer.Change(0, 500);
        Console.WriteLine("\nChanging period to .5 seconds.\n");

        // When autoEvent signals the second time, dispose of the timer.
        autoEvent.WaitOne();
        stateTimer.Dispose();
        Console.WriteLine("\nDestroying timer.");
    }
}

class StatusChecker
{
    private int invokeCount;
    private int  maxCount;

    public StatusChecker(int count)
    {
        invokeCount  = 0;
        maxCount = count;
    }

    // This method is called by the timer delegate.
    public void CheckStatus(Object stateInfo)
    {
        AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("{0} Checking status {1,2}.", 
            DateTime.Now.ToString("h:mm:ss.fff"), 
            (++invokeCount).ToString());

        if(invokeCount == maxCount)
        {
            // Reset the counter and signal the waiting thread.
            invokeCount = 0;
            autoEvent.Set();
        }
    }
}
// The example displays output like the following:
//       11:59:54.202 Creating timer.
//       
//       11:59:55.217 Checking status  1.
//       11:59:55.466 Checking status  2.
//       11:59:55.716 Checking status  3.
//       11:59:55.968 Checking status  4.
//       11:59:56.218 Checking status  5.
//       11:59:56.470 Checking status  6.
//       11:59:56.722 Checking status  7.
//       11:59:56.972 Checking status  8.
//       11:59:57.223 Checking status  9.
//       11:59:57.473 Checking status 10.
//       
//       Changing period to .5 seconds.
//       
//       11:59:57.474 Checking status  1.
//       11:59:57.976 Checking status  2.
//       11:59:58.476 Checking status  3.
//       11:59:58.977 Checking status  4.
//       11:59:59.477 Checking status  5.
//       11:59:59.977 Checking status  6.
//       12:00:00.478 Checking status  7.
//       12:00:00.980 Checking status  8.
//       12:00:01.481 Checking status  9.
//       12:00:01.981 Checking status 10.
//       
//       Destroying timer.
Imports System.Threading

Public Module Example
    Public Sub Main()
        ' Use an AutoResetEvent to signal the timeout threshold in the
        ' timer callback has been reached.
        Dim autoEvent As New AutoResetEvent(False)

        Dim statusChecker As New StatusChecker(10)

        ' Create a timer that invokes CheckStatus after one second, 
        ' and every 1/4 second thereafter.
        Console.WriteLine("{0:h:mm:ss.fff} Creating timer." & vbCrLf, 
                          DateTime.Now)
        Dim stateTimer As New Timer(AddressOf statusChecker.CheckStatus, 
                                    autoEvent, 1000, 250)

        ' When autoEvent signals, change the period to every half second.
        autoEvent.WaitOne()
        stateTimer.Change(0, 500)
        Console.WriteLine(vbCrLf & "Changing period to .5 seconds." & vbCrLf)

        ' When autoEvent signals the second time, dispose of the timer.
        autoEvent.WaitOne()
        stateTimer.Dispose()
        Console.WriteLine(vbCrLf & "Destroying timer.")
    End Sub
End Module

Public Class StatusChecker
    Dim invokeCount, maxCount As Integer 

    Sub New(count As Integer)
        invokeCount  = 0
        maxCount = count
    End Sub

    ' The timer callback method.
    Sub CheckStatus(stateInfo As Object)
        Dim autoEvent As AutoResetEvent = DirectCast(stateInfo, AutoResetEvent)
        invokeCount += 1
        Console.WriteLine("{0:h:mm:ss.fff} Checking status {1,2}.", 
                          DateTime.Now, invokeCount)
        If invokeCount = maxCount Then
            ' Reset the counter and signal the waiting thread.
            invokeCount = 0
            autoEvent.Set()
        End If
    End Sub
End Class
' The example displays output like the following:
'       11:59:54.202 Creating timer.
'       
'       11:59:55.217 Checking status  1.
'       11:59:55.466 Checking status  2.
'       11:59:55.716 Checking status  3.
'       11:59:55.968 Checking status  4.
'       11:59:56.218 Checking status  5.
'       11:59:56.470 Checking status  6.
'       11:59:56.722 Checking status  7.
'       11:59:56.972 Checking status  8.
'       11:59:57.223 Checking status  9.
'       11:59:57.473 Checking status 10.
'       
'       Changing period to .5 seconds.
'       
'       11:59:57.474 Checking status  1.
'       11:59:57.976 Checking status  2.
'       11:59:58.476 Checking status  3.
'       11:59:58.977 Checking status  4.
'       11:59:59.477 Checking status  5.
'       11:59:59.977 Checking status  6.
'       12:00:00.478 Checking status  7.
'       12:00:00.980 Checking status  8.
'       12:00:01.481 Checking status  9.
'       12:00:01.981 Checking status 10.
'       
'       Destroying timer.

Megjegyzések

A visszahívási módszer az eltelt idő után dueTime egyszer, majd minden alkalommal, amikor az eltelt időintervallum period meg van adva.

Ha dueTime nulla (0), a visszahívási metódus azonnal meg lesz hívva. Ha dueTime igen Timeout.Infinite, a visszahívási metódus soha nem lesz meghívva; az időzítő le van tiltva, de újra engedélyezhető a hívással Change és egy pozitív érték dueTimemegadásával.

Ha period nulla (0) vagy Timeout.InfinitenemTimeout.Infinite, dueTime a visszahívási metódust egyszer hívja meg a rendszer; az időzítő rendszeres viselkedése le van tiltva, de újra engedélyezhető a hívással Change és a pozitív érték periodmegadásával.

A Change metódus meghívható a TimerCallback meghatalmazotttól.

Lásd még

A következőre érvényes:

Change(Int64, Int64)

Az időintervallumok méréséhez 64 bites aláírt egész számok használatával módosítja a kezdési időpontot és a metódushívások közötti időközt.

public:
 bool Change(long dueTime, long period);
public bool Change(long dueTime, long period);
member this.Change : int64 * int64 -> bool
Public Function Change (dueTime As Long, period As Long) As Boolean

Paraméterek

dueTime
Int64

A visszahívási módszer létrehozásakor Timer megadott visszahívási módszer meghívása előtt késleltetési idő ezredmásodpercben. Adja meg Infinite , hogy az időzítő ne induljon újra. Adja meg a nullát (0) az időzítő azonnali újraindításához. Ennek az értéknek kisebbnek vagy egyenlőnek kell lennie, mint 4294967294.

period
Int64

A visszahívási módszer meghívásai közötti időintervallum, amely a Timer megépítéskor van megadva, ezredmásodpercben. Adja meg Infinite az időszakos jelzés letiltását.

Válaszok

trueha az időzítő frissítése sikeresen megtörtént; egyéb esetben. false

Kivételek

A Timer már el lett dobva.

dueTime vagy period kisebb, mint -1.

-vagy-

dueTime vagy period nagyobb, mint 4294967294.

Megjegyzések

A visszahívási módszer az eltelt idő után dueTime egyszer, majd minden alkalommal, amikor az eltelt időintervallum period meg van adva.

Ha dueTime nulla (0), a visszahívási metódus azonnal meg lesz hívva. Ha dueTime igen Timeout.Infinite, a visszahívási metódus soha nem lesz meghívva; az időzítő le van tiltva, de újra engedélyezhető a hívással Change és egy pozitív érték dueTimemegadásával.

Ha period nulla (0) vagy Timeout.InfinitenemTimeout.Infinite, dueTime a visszahívási metódust egyszer hívja meg a rendszer; az időzítő rendszeres viselkedése le van tiltva, de újra engedélyezhető a hívással Change és a pozitív érték periodmegadásával.

A Change metódus meghívható a TimerCallback meghatalmazotttól.

Lásd még

A következőre érvényes:

Change(TimeSpan, TimeSpan)

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt az időintervallumok mérésére szolgáló értékek használatával TimeSpan .

public:
 bool Change(TimeSpan dueTime, TimeSpan period);
public bool Change(TimeSpan dueTime, TimeSpan period);
member this.Change : TimeSpan * TimeSpan -> bool
Public Function Change (dueTime As TimeSpan, period As TimeSpan) As Boolean

Paraméterek

dueTime
TimeSpan

Az TimeSpan a késleltetési idő, amely a visszahívási módszer létrehozásakor Timer megadott visszahívási módszer meghívása előtt eltelt időt jelöli. Adja meg InfiniteTimeSpan , hogy az időzítő ne induljon újra. Adja meg Zero , hogy az időzítő azonnal újrainduljon.

period
TimeSpan

A visszahívási metódus meghívásai közötti időintervallum, amelyet a rendszer a Timer létrehozásakor adott meg. Adja meg InfiniteTimeSpan az időszakos jelzés letiltását.

Válaszok

trueha az időzítő frissítése sikeresen megtörtént; egyéb esetben. false

Kivételek

A Timer már el lett dobva.

A dueTime vagy period paraméter ezredmásodpercben kisebb, mint -1.

A dueTime paraméter ezredmásodpercben period nagyobb, mint 4294967294.

Példák

Az alábbi példakód bemutatja, hogyan indíthat el egy meghívást Timer , és egy megadott számú meghívás után módosíthatja annak időtartamát.

using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        AutoResetEvent autoEvent     = new AutoResetEvent(false);
        StatusChecker  statusChecker = new StatusChecker(10);

        // Create the delegate that invokes methods for the timer.
        TimerCallback timerDelegate = 
            new TimerCallback(statusChecker.CheckStatus);

        TimeSpan delayTime = new TimeSpan(0, 0, 1);
        TimeSpan intervalTime = new TimeSpan(0, 0, 0, 0, 250);

        // Create a timer that signals the delegate to invoke 
        // CheckStatus after one second, and every 1/4 second 
        // thereafter.
        Console.WriteLine("{0} Creating timer.\n", 
            DateTime.Now.ToString("h:mm:ss.fff"));
        Timer stateTimer = new Timer(
            timerDelegate, autoEvent, delayTime, intervalTime);

        // When autoEvent signals, change the period to every 
        // 1/2 second.
        autoEvent.WaitOne(5000, false);
        stateTimer.Change(new TimeSpan(0), 
            intervalTime + intervalTime);
        Console.WriteLine("\nChanging period.\n");

        // When autoEvent signals the second time, dispose of 
        // the timer.
        autoEvent.WaitOne(5000, false);
        stateTimer.Dispose();
        Console.WriteLine("\nDestroying timer.");
    }
}

class StatusChecker
{
    int invokeCount, maxCount;

    public StatusChecker(int count)
    {
        invokeCount  = 0;
        maxCount = count;
    }

    // This method is called by the timer delegate.
    public void CheckStatus(Object stateInfo)
    {
        AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("{0} Checking status {1,2}.", 
            DateTime.Now.ToString("h:mm:ss.fff"), 
            (++invokeCount).ToString());

        if(invokeCount == maxCount)
        {
            // Reset the counter and signal Main.
            invokeCount  = 0;
            autoEvent.Set();
        }
    }
}
Imports System.Threading

Public Class TimerExample

    <MTAThread> _
    Shared Sub Main()
    
        Dim autoEvent As New AutoResetEvent(False)
        Dim statusChecker As New StatusChecker(10)

        ' Create the delegate that invokes methods for the timer.
        Dim timerDelegate As TimerCallback = _
            AddressOf statusChecker.CheckStatus

        Dim delayTime As New TimeSpan(0, 0, 1)
        Dim intervalTime As New TimeSpan(0, 0, 0, 0, 250)

        ' Create a timer that signals the delegate to invoke 
        ' CheckStatus after one second, and every 1/4 second 
        ' thereafter.
        Console.WriteLine("{0} Creating timer." & vbCrLf, _
            DateTime.Now.ToString("h:mm:ss.fff"))
        Dim stateTimer As Timer = New Timer( _
            timerDelegate, autoEvent, delayTime, intervalTime)

        ' When autoEvent signals, change the period to every 
        ' 1/2 second.
        autoEvent.WaitOne(5000, False)
        stateTimer.Change( _
            new TimeSpan(0), intervalTime.Add(intervalTime))
        Console.WriteLine(vbCrLf & "Changing period." & vbCrLf)

        ' When autoEvent signals the second time, dispose of 
        ' the timer.
        autoEvent.WaitOne(5000, False)
        stateTimer.Dispose()
        Console.WriteLine(vbCrLf & "Destroying timer.")
    
    End Sub
End Class

Public Class StatusChecker

    Dim invokeCount, maxCount As Integer 

    Sub New(count As Integer)
        invokeCount  = 0
        maxCount = count
    End Sub

    ' This method is called by the timer delegate.
    Sub CheckStatus(stateInfo As Object)
        Dim autoEvent As AutoResetEvent = _
            DirectCast(stateInfo, AutoResetEvent)
        invokeCount += 1
        Console.WriteLine("{0} Checking status {1,2}.", _
            DateTime.Now.ToString("h:mm:ss.fff"), _
            invokeCount.ToString())

        If invokeCount = maxCount Then
        
            ' Reset the counter and signal to stop the timer.
            invokeCount  = 0
            autoEvent.Set()
        End If
    End Sub

End Class

Megjegyzések

A visszahívási módszer az eltelt idő után dueTime egyszer, majd minden alkalommal, amikor az eltelt időintervallum period meg van adva.

Ha dueTime igen TimeSpan.Zero, a visszahívási metódus azonnal meg lesz hívva. Ha dueTime igen InfiniteTimeSpan, a visszahívási metódus soha nem lesz meghívva; az időzítő le van tiltva, de újra engedélyezhető a hívással Change és egy pozitív érték dueTimemegadásával.

Ha period igenTimeSpan.Zero, és InfiniteTimeSpandueTime pozitív, a visszahívási metódust egyszer hívja meg a rendszer; az időzítő rendszeres viselkedése le van tiltva, de újra engedélyezhető a hívással Change és a nullánál periodnagyobb érték megadásával.

A Change metódus meghívható a TimerCallback meghatalmazotttól.

Lásd még

A következőre érvényes:

Change(UInt32, UInt32)

Fontos

Ez az API nem CLS-kompatibilis.

Módosítja a kezdési időpontot és az időzítő metódushívásai közötti időközt, 32 bites, aláíratlan egész számokkal méri az időintervallumokat.

public:
 bool Change(System::UInt32 dueTime, System::UInt32 period);
[System.CLSCompliant(false)]
public bool Change(uint dueTime, uint period);
[<System.CLSCompliant(false)>]
member this.Change : uint32 * uint32 -> bool
Public Function Change (dueTime As UInteger, period As UInteger) As Boolean

Paraméterek

dueTime
UInt32

A visszahívási módszer létrehozásakor Timer megadott visszahívási módszer meghívása előtt késleltetési idő ezredmásodpercben. Adja meg Infinite , hogy az időzítő ne induljon újra. Adja meg a nullát (0) az időzítő azonnali újraindításához.

period
UInt32

A visszahívási módszer meghívásai közötti időintervallum, amely a Timer megépítéskor van megadva, ezredmásodpercben. Adja meg Infinite az időszakos jelzés letiltását.

Válaszok

trueha az időzítő frissítése sikeresen megtörtént; egyéb esetben. false

Attribútumok

Kivételek

A Timer már el lett dobva.

Megjegyzések

A visszahívási módszer az eltelt idő után dueTime egyszer, majd minden alkalommal, amikor az eltelt időintervallum period meg van adva.

Ha dueTime nulla (0), a visszahívási metódus azonnal meg lesz hívva. Ha dueTime igen Timeout.Infinite, a visszahívási metódus soha nem lesz meghívva; az időzítő le van tiltva, de újra engedélyezhető a hívással Change és egy pozitív érték dueTimemegadásával.

Ha period nulla (0) vagy Timeout.InfinitenemTimeout.Infinite, dueTime a visszahívási metódust egyszer hívja meg a rendszer; az időzítő rendszeres viselkedése le van tiltva, de újra engedélyezhető a hívással Change és a pozitív érték periodmegadásával.

A Change metódus meghívható a TimerCallback meghatalmazotttól.

Lásd még

A következőre érvényes: