2
我有一個類RefreshAsync方法,可能需要很長時間才能執行。 我正在使用Mvvm輕型框架。 我需要調用它的對象創建後,但不是每次當我得到它從服務定位WPF 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'傳遞給構造函數)。 –
如果我在DispatcherHelper.CheckBeginInvokeOnUI(()=> ...)中創建DispatcherTimer實例會怎麼樣?它會起作用嗎? – Anton
我已經把它寫在下面的答案中。 –