It is best to stick with DispatcherTimer , as you first pointed out, as this ensures that you do not need to sort the streams by tick. If you explicitly need accurate and / or background threads, see the System.Timers.Timer Class and System.Threading.Timer Class.
Sample code that distinguishes between single and double clicks can be found on MSDN (it depends on Windows Forms, but the principle is the same). Alternatively, please see this example using DispatcherTimer taken from this previous question.
private static DispatcherTimer clickTimer = new DispatcherTimer( TimeSpan.FromMilliseconds(SystemInformation.DoubleClickTime), DispatcherPriority.Background, mouseWaitTimer_Tick, Dispatcher.CurrentDispatcher); private void Button_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
source share