Compartilhar via


Timer.Change Método

Definição

Altera a hora de início e o intervalo entre invocações de método para um temporizador.

Sobrecargas

Change(Int32, Int32)

Altera a hora de início e o intervalo entre as invocações de método para um temporizador, usando inteiros com sinal de 32 bits para medir intervalos de tempo.

Change(Int64, Int64)

Altera a hora de início e o intervalo entre as invocações de método para um temporizador, usando inteiros com sinal de 64 bits para medir intervalos de tempo.

Change(TimeSpan, TimeSpan)

Altera a hora de início e o intervalo entre as invocações de método para um temporizador, usando valores de TimeSpan para medir os intervalos de tempo.

Change(UInt32, UInt32)

Altera a hora de início e o intervalo entre as invocações de método de um temporizador, usando inteiros sem sinal de 32 bits para medir os intervalos de tempo.

Change(Int32, Int32)

Origem:
Timer.cs
Origem:
Timer.cs
Origem:
Timer.cs

Altera a hora de início e o intervalo entre as invocações de método para um temporizador, usando inteiros com sinal de 32 bits para medir intervalos de tempo.

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

Parâmetros

dueTime
Int32

A quantidade de tempo de atraso antes de invocar o método de retorno de chamada especificado quando o Timer foi construído, em milissegundos. Especifique Infinite para impedir que o temporizador seja reiniciado. Especifique zero (0) para reiniciar o temporizador imediatamente.

period
Int32

O intervalo de tempo entre as invocações do método de retorno de chamada especificado quando o Timer foi construído, em milissegundos. Especifica Infinite para desabilitar a sinalização periódica.

Retornos

true se o temporizador foi atualizado com êxito; caso contrário, false.

Exceções

O Timer já foi descartado.

O parâmetro dueTime ou period é negativo e não é igual a Infinite.

Exemplos

O exemplo de código a seguir demonstra como iniciar um Timer e, após um número definido de invocações, alterar seu período.

using namespace System;
using namespace System::Threading;

ref class StatusChecker
{
private:
    int invokeCount, maxCount;

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

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

        if (invokeCount == maxCount) {
            // Reset the counter and signal the waiting thread.
            invokeCount  = 0;
            autoEvent->Set();
        }
    }
};

ref class TimerExample
{
public:
    static void Main()
    {
        // Create an AutoResetEvent to signal the timeout threshold in the
        // timer callback has been reached.
        AutoResetEvent^ autoEvent = gcnew AutoResetEvent(false);

        StatusChecker^ statusChecker = gcnew StatusChecker(10);

        // Create a delegate that invokes methods for the timer.
        TimerCallback^ tcb =
           gcnew TimerCallback(statusChecker, &StatusChecker::CheckStatus);

        // 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);
        Timer^ stateTimer = gcnew Timer(tcb, autoEvent, 1000, 250);

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

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

int main()
{
    TimerExample::Main();
}
// 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.
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.

Comentários

O método de retorno de chamada é invocado uma vez após dueTime decorridos e, posteriormente, sempre que o intervalo de tempo especificado por period decorridos.

Se dueTime for zero (0), o método de retorno de chamada será invocado imediatamente. Se dueTime for Timeout.Infinite, o método de retorno de chamada nunca será invocado; o temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para dueTime.

Se period for zero (0) ou Timeout.Infinite, e dueTime não Timeout.Infinitefor , o método de retorno de chamada será invocado uma vez; o comportamento periódico do temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para period.

O Change método pode ser chamado do TimerCallback delegado.

Confira também

Aplica-se a

Change(Int64, Int64)

Origem:
Timer.cs
Origem:
Timer.cs
Origem:
Timer.cs

Altera a hora de início e o intervalo entre as invocações de método para um temporizador, usando inteiros com sinal de 64 bits para medir intervalos de tempo.

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

Parâmetros

dueTime
Int64

A quantidade de tempo de atraso antes de invocar o método de retorno de chamada especificado quando o Timer foi construído, em milissegundos. Especifique Infinite para impedir que o temporizador seja reiniciado. Especifique zero (0) para reiniciar o temporizador imediatamente. O valor deve ser menor ou igual a 4294967294.

period
Int64

O intervalo de tempo entre as invocações do método de retorno de chamada especificado quando o Timer foi construído, em milissegundos. Especifica Infinite para desabilitar a sinalização periódica.

Retornos

true se o temporizador foi atualizado com êxito; caso contrário, false.

Exceções

O Timer já foi descartado.

dueTime ou period é menor que -1.

- ou -

dueTime ou period é maior que 4294967294.

Comentários

O método de retorno de chamada é invocado uma vez após dueTime decorridos e, posteriormente, sempre que o intervalo de tempo especificado por period decorridos.

Se dueTime for zero (0), o método de retorno de chamada será invocado imediatamente. Se dueTime for Timeout.Infinite, o método de retorno de chamada nunca será invocado; o temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para dueTime.

Se period for zero (0) ou Timeout.Infinite, e dueTime não Timeout.Infinitefor , o método de retorno de chamada será invocado uma vez; o comportamento periódico do temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para period.

O Change método pode ser chamado do TimerCallback delegado.

Confira também

Aplica-se a

Change(TimeSpan, TimeSpan)

Origem:
Timer.cs
Origem:
Timer.cs
Origem:
Timer.cs

Altera a hora de início e o intervalo entre as invocações de método para um temporizador, usando valores de TimeSpan para medir os intervalos de tempo.

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

Parâmetros

dueTime
TimeSpan

O TimeSpan que representa o período de tempo de atraso antes de invocar o método de retorno de chamada especificado quando o Timer foi construído. Especifique InfiniteTimeSpan para impedir que o temporizador seja reiniciado. Especifica Zero para reiniciar o temporizador imediatamente.

period
TimeSpan

O intervalo de tempo entre as invocações do método de retorno de chamada especificado quando o Timer foi construído. Especifica InfiniteTimeSpan para desabilitar a sinalização periódica.

Retornos

true se o temporizador foi atualizado com êxito; caso contrário, false.

Implementações

Exceções

O Timer já foi descartado.

O parâmetro dueTime ou period, em milissegundos, é menor que -1.

O parâmetro dueTime ou period, em milissegundos, é maior que 4294967294.

Exemplos

O exemplo de código a seguir demonstra como iniciar um Timer e, após um número definido de invocações, alterar seu período.

using namespace System;
using namespace System::Threading;
ref class StatusChecker
{
private:
   int invokeCount;
   int maxCount;

public:
   StatusChecker( int count )
      : invokeCount( 0 ), maxCount( count )
   {}


   // This method is called by the timer delegate.
   void CheckStatus( Object^ stateInfo )
   {
      AutoResetEvent^ autoEvent = dynamic_cast<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();
      }
   }

};

int main()
{
   AutoResetEvent^ autoEvent = gcnew AutoResetEvent( false );
   StatusChecker^ statusChecker = gcnew StatusChecker( 10 );
   
   // Create the delegate that invokes methods for the timer.
   TimerCallback^ timerDelegate = gcnew TimerCallback( statusChecker, &StatusChecker::CheckStatus );
   TimeSpan delayTime = TimeSpan(0,0,1);
   TimeSpan intervalTime = 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 = gcnew Timer( timerDelegate,autoEvent,delayTime,intervalTime );
   
   // When autoEvent signals, change the period to every 1/2 second.
   autoEvent->WaitOne( 5000, false );
   stateTimer->Change( TimeSpan(0), intervalTime + intervalTime );
   Console::WriteLine( "\nChanging period.\n" );
   
   // When autoEvent signals the second time, dispose of the timer.
   autoEvent->WaitOne( 5000, false );
   stateTimer->~Timer();
   Console::WriteLine( "\nDestroying timer." );
}
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

Comentários

O método de retorno de chamada é invocado uma vez após dueTime decorridos e, posteriormente, sempre que o intervalo de tempo especificado por period decorridos.

Se dueTime for TimeSpan.Zero, o método de retorno de chamada será invocado imediatamente. Se dueTime for InfiniteTimeSpan, o método de retorno de chamada nunca será invocado; o temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para dueTime.

Se period for TimeSpan.Zero ou InfiniteTimeSpane dueTime for positivo, o método de retorno de chamada será invocado uma vez; o comportamento periódico do temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor maior que zero para period.

O Change método pode ser chamado do TimerCallback delegado.

Confira também

Aplica-se a

Change(UInt32, UInt32)

Origem:
Timer.cs
Origem:
Timer.cs
Origem:
Timer.cs

Importante

Esta API não está em conformidade com CLS.

Altera a hora de início e o intervalo entre as invocações de método de um temporizador, usando inteiros sem sinal de 32 bits para medir os intervalos de tempo.

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

Parâmetros

dueTime
UInt32

A quantidade de tempo de atraso antes de invocar o método de retorno de chamada especificado quando o Timer foi construído, em milissegundos. Especifique Infinite para impedir que o temporizador seja reiniciado. Especifique zero (0) para reiniciar o temporizador imediatamente.

period
UInt32

O intervalo de tempo entre as invocações do método de retorno de chamada especificado quando o Timer foi construído, em milissegundos. Especifica Infinite para desabilitar a sinalização periódica.

Retornos

true se o temporizador foi atualizado com êxito; caso contrário, false.

Atributos

Exceções

O Timer já foi descartado.

Comentários

O método de retorno de chamada é invocado uma vez após dueTime decorridos e, posteriormente, sempre que o intervalo de tempo especificado por period decorridos.

Se dueTime for zero (0), o método de retorno de chamada será invocado imediatamente. Se dueTime for Timeout.Infinite, o método de retorno de chamada nunca será invocado; o temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para dueTime.

Se period for zero (0) ou Timeout.Infinite, e dueTime não Timeout.Infinitefor , o método de retorno de chamada será invocado uma vez; o comportamento periódico do temporizador será desabilitado, mas poderá ser habilitado novamente chamando Change e especificando um valor positivo para period.

O Change método pode ser chamado do TimerCallback delegado.

Confira também

Aplica-se a