DispatcherTimer Класс

Определение

Таймер, интегрированный в очередь Dispatcher, обрабатываемый с заданным интервалом времени и заданным приоритетом.A timer that is integrated into the Dispatcher queue which is processed at a specified interval of time and at a specified priority.

public ref class DispatcherTimer
public class DispatcherTimer
type DispatcherTimer = class
Public Class DispatcherTimer
Наследование
DispatcherTimer

Примеры

В следующем примере создается DispatcherTimer, который обновляет содержимое Label и вызывает метод InvalidateRequerySuggested для CommandManager.The following example creates a DispatcherTimer that updates the contents of a Label and calls the InvalidateRequerySuggested method on the CommandManager.

Создается объект DispatcherTimer с именем dispatcherTimer.A DispatcherTimer object named dispatcherTimer is created. Обработчик событий dispatcherTimer_Tick добавляется в Tick событие dispatcherTimer.The event handler dispatcherTimer_Tick is added to the Tick event of dispatcherTimer. Для Interval задается значение 1 секунда с помощью объекта TimeSpan и запускается таймер.The Interval is set to 1 second using a TimeSpan object, and the timer is started.

//  DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
'  DispatcherTimer setup
dispatcherTimer = New Threading.DispatcherTimer()
AddHandler dispatcherTimer.Tick, AddressOf dispatcherTimer_Tick
dispatcherTimer.Interval = New TimeSpan(0,0,1)
dispatcherTimer.Start()

Обработчик событий Tick обновляет Label, отображающий текущую секунду, и вызывает InvalidateRequerySuggested на CommandManager.The Tick event handler updates a Label that displays the current second, and it calls InvalidateRequerySuggested on the CommandManager.

//  System.Windows.Threading.DispatcherTimer.Tick handler
//
//  Updates the current seconds display and calls
//  InvalidateRequerySuggested on the CommandManager to force 
//  the Command to raise the CanExecuteChanged event.
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    // Updating the Label which displays the current second
    lblSeconds.Content = DateTime.Now.Second;

    // Forcing the CommandManager to raise the RequerySuggested event
    CommandManager.InvalidateRequerySuggested();
}
'  System.Windows.Threading.DispatcherTimer.Tick handler
'
'  Updates the current seconds display and calls
'  InvalidateRequerySuggested on the CommandManager to force 
'  the Command to raise the CanExecuteChanged event.
Private Sub dispatcherTimer_Tick(ByVal sender As Object, ByVal e As EventArgs)
    ' Updating the Label which displays the current second
    lblSeconds.Content = Date.Now.Second

    ' Forcing the CommandManager to raise the RequerySuggested event
    CommandManager.InvalidateRequerySuggested()
End Sub

Комментарии

DispatcherTimer вычисляется повторно в начале каждого цикла Dispatcher.The DispatcherTimer is reevaluated at the top of every Dispatcher loop.

Таймеры не гарантированно выполняются в точности при наступлении интервала времени, но они гарантированно не будут выполняться до наступления интервала времени.Timers are not guaranteed to execute exactly when the time interval occurs, but they are guaranteed to not execute before the time interval occurs. Это связано с тем, что DispatcherTimer операции помещаются в очередь Dispatcher, например в другие операции.This is because DispatcherTimer operations are placed on the Dispatcher queue like other operations. При выполнении операции DispatcherTimer зависит от других заданий в очереди и их приоритетов.When the DispatcherTimer operation executes is dependent on the other jobs in the queue and their priorities.

Если System.Timers.Timer используется в WPFWPF приложении, стоит отметить, что System.Timers.Timer выполняется в потоке, отличном от потока пользовательский интерфейсuser interface (UI).If a System.Timers.Timer is used in a WPFWPF application, it is worth noting that the System.Timers.Timer runs on a different thread than the пользовательский интерфейсuser interface (UI) thread. Чтобы получить доступ к объектам в потоке пользовательский интерфейсuser interface (UI), необходимо опубликовать операцию на Dispatcher пользовательский интерфейсuser interface (UI)ого потока с помощью Invoke или BeginInvoke.In order to access objects on the пользовательский интерфейсuser interface (UI) thread, it is necessary to post the operation onto the Dispatcher of the пользовательский интерфейсuser interface (UI) thread using Invoke or BeginInvoke. Причины использования DispatcherTimer, в отличие от System.Timers.Timer, заключается в том, что DispatcherTimer выполняется в том же потоке, что и Dispatcher, а DispatcherPriority может быть установлен в DispatcherTimer.Reasons for using a DispatcherTimer as opposed to a System.Timers.Timer are that the DispatcherTimer runs on the same thread as the Dispatcher and a DispatcherPriority can be set on the DispatcherTimer.

DispatcherTimer сохранит объект в рабочем состоянии каждый раз, когда методы объекта привязаны к таймеру.A DispatcherTimer will keep an object alive whenever the object's methods are bound to the timer.

Конструкторы

DispatcherTimer()

Инициализирует новый экземпляр класса DispatcherTimer.Initializes a new instance of the DispatcherTimer class.

DispatcherTimer(DispatcherPriority)

Инициализирует новый экземпляр класса DispatcherTimer, обрабатывающий события таймера с заданным приоритетом.Initializes a new instance of the DispatcherTimer class which processes timer events at the specified priority.

DispatcherTimer(DispatcherPriority, Dispatcher)

Инициализирует новый экземпляр класса DispatcherTimer, который выполняется с заданным приоритетом заданным объектом Dispatcher.Initializes a new instance of the DispatcherTimer class which runs on the specified Dispatcher at the specified priority.

DispatcherTimer(TimeSpan, DispatcherPriority, EventHandler, Dispatcher)

Инициализирует новый экземпляр класса DispatcherTimer, устанавливая для него заданные интервал, приоритет, обработчик событий и объект Dispatcher.Initializes a new instance of the DispatcherTimer class which uses the specified time interval, priority, event handler, and Dispatcher.

Свойства

Dispatcher

Возвращает объект Dispatcher, связанный с этим объектом DispatcherTimer.Gets the Dispatcher associated with this DispatcherTimer.

Interval

Возвращает или задает период времени между тактами таймера.Gets or sets the period of time between timer ticks.

IsEnabled

Возвращает или задает значение, указывающее, работает ли таймер.Gets or sets a value that indicates whether the timer is running.

Tag

Получает или задает определенные пользователем данные объекта.Gets or sets a user-defined data object.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
Start()

Запускает DispatcherTimer.Starts the DispatcherTimer.

Stop()

Останавливает DispatcherTimer.Stops the DispatcherTimer.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

События

Tick

Происходит по истечении интервала таймера.Occurs when the timer interval has elapsed.

Применяется к