Я бы не предположил , что DispatcherTimer
имеет большой вес ... почему бы просто не написать метод расширения для Dispatcher
, который позволяет вам использовать нужный синтаксис, и использует DispatcherTimer
на заднем плане? Я лично назвал бы это DelayInvoke
, а не BeginInvoke
, хотя ... и я бы также исправил это, чтобы всегда использовать Action
, а не произвольный делегат ..., который облегчит использование лямбда-выражений:
Dispatcher.DelayInvoke(TimeSpan.FromMilliseconds(200), () => { ...
});
(Я склонен считать, что это более читабельно, если анонимные функции используются в качестве последнего аргумента в вызове метода, но это всего лишь личное предпочтение.)
Учитывая, что вы, скорее всего, будете чаще использовать миллисекунды, у вас может быть и другой вспомогательный метод:
Dispatcher.DelayInvokeMillis(200, () => { ...
});
Другая альтернатива - просто использовать существующий метод BeginInvoke
, но с очень низким приоритетом, поэтому ваш делегат будет вызываться только после того, как все остальное закончится. Не зная деталей вашей ситуации, трудно понять, сработает ли это или нет, но стоит попробовать.