Ciao
Vado a memoria: se accedi al DB all'interno di un evento scatenato da un timer, non dovresti avere problemi di programma che si muove a scatti. Async/Await serve solo se fai tali accessi durante un evento tipo "click" perchè quell'evento appartiene al thread grafico da cui ti devi staccare.
Per quanto riguarda il Dispatcher, se vuoi cambiare la proprietà text di una label chiamata lblDescription, devi scrivere qualcosa del genere (vado a mano, quindi potrei sbagliare qualche lettera):
lblDescription.Dispatcher.Invoke(new Action(() =>
{
lblDescription.Text = "Nuovo testo preso dal DB";
}));