У меня есть класс с методом RefreshAsync, который может занять много времени. Я использую Mvvm light framework. мне нужно вызвать его после того, как созданный объект, но не каждый раз, когда я получаю это экземпляр из ServiceLocatorWPF DispatcherTimer не работает
var vm = ServiceLocator.Current.GetInstance<FileSystemViewModel>();
Поэтому я использую DispatcherTimer
создать отложенную логику обновления. Но он не срабатывает, и я не знаю, почему.
Вот код
private DispatcherTimer _timer;
public FileSystemViewModel()
{
_timer = new DispatcherTimer(DispatcherPriority.Send) {Interval = TimeSpan.FromMilliseconds(20)};
_timer.Tick += DefferedUpdate;
_timer.Start();
}
private async void DefferedUpdate(object sender, EventArgs e)
{
(sender as DispatcherTimer)?.Stop();
await RefreshAsync().ConfigureAwait(false);
}
Какая из этих конструкторов работает? Создание 'DispatcherTimer' должно быть из потока с активным' Dispatcher' (или иначе передать действительный активный 'Dispatcher' в конструктор). –
И что делать, если я создаю экземпляр DispatcherTimer в DispatcherHelper.CheckBeginInvokeOnUI (() => ...)? Это будет работать? – Anton
Я написал все это в ответе ниже. –