DispatcherTimer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Таймер, интегрированный в Dispatcher очередь, которая обрабатывается с заданным интервалом времени и заданным приоритетом.
public ref class DispatcherTimer
public class DispatcherTimer
type DispatcherTimer = class
Public Class DispatcherTimer
- Наследование
-
DispatcherTimer
Примеры
В следующем примере создается DispatcherTimer объект, который обновляет содержимое Label и вызывает InvalidateRequerySuggested метод в объекте CommandManager.
DispatcherTimer Создается объект с именемdispatcherTimer. Обработчик событий dispatcherTimer_Tick добавляется в Tick событие dispatcherTimer. Для Interval этого задано значение 1 секунды с помощью TimeSpan объекта, а таймер запускается.
// DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = TimeSpan.FromSeconds(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.
// 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 цикла.
Таймеры не гарантируются точно при возникновении интервала времени, но они гарантированно не выполняются до возникновения интервала времени. Это связано с тем, что DispatcherTimer операции помещаются в Dispatcher очередь, как и другие операции. DispatcherTimer Когда операция выполняется, зависит от других заданий в очереди и их приоритетов.
Если в приложении WPF используется System.Timers.Timer, следует отметить, что System.Timers.Timer выполняется в другом потоке, отличном от потока пользовательского интерфейса. Чтобы получить доступ к объектам в потоке пользовательского интерфейса, необходимо опубликовать операцию в Dispatcher потоке InvokeBeginInvokeпользовательского интерфейса (UI). Причины использования в DispatcherTimer отличие от того System.Timers.Timer , что выполняется в том же потоке, что DispatcherTimerDispatcher и может DispatcherPriority быть задано DispatcherTimerв .
Объект DispatcherTimer будет оставаться в живых, когда методы объекта привязаны к таймеру.
Конструкторы
| Имя | Описание |
|---|---|
| DispatcherTimer() |
Инициализирует новый экземпляр класса DispatcherTimer. |
| DispatcherTimer(DispatcherPriority, Dispatcher) |
Инициализирует новый экземпляр DispatcherTimer класса, который выполняется по указанному Dispatcher приоритету. |
| DispatcherTimer(DispatcherPriority) |
Инициализирует новый экземпляр DispatcherTimer класса, который обрабатывает события таймера по указанному приоритету. |
| DispatcherTimer(TimeSpan, DispatcherPriority, EventHandler, Dispatcher) |
Инициализирует новый экземпляр DispatcherTimer класса, который использует указанный интервал времени, приоритет, обработчик событий и Dispatcher. |
Свойства
| Имя | Описание |
|---|---|
| Dispatcher |
Возвращает связанный Dispatcher с этим DispatcherTimerобъект. |
| Interval |
Возвращает или задает период времени между тиками таймера. |
| IsEnabled |
Возвращает или задает значение, указывающее, выполняется ли таймер. |
| Tag |
Возвращает или задает определяемый пользователем объект данных. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Start() |
DispatcherTimerЗапускается . |
| Stop() |
DispatcherTimerОстанавливается. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
События
| Имя | Описание |
|---|---|
| Tick |
Происходит при истечении интервала таймера. |