Porównanie zegara z DispatcherTimer

jaka jest różnicabetween System.Windows.Forms.Timer() iSystem.Windows.Threading.DispatcherTimer() ? W jakich przypadkach powinniśmy je wykorzystać? jakieś najlepsze praktyki?