Trigger an action to start after X milliseconds
you can try :
await Task.Delay(2000);
Just like you said this can be accomplished in a very clean way using Tasks
and async programming.
You will want to read about it: http://msdn.microsoft.com/en-us/library/hh191443.aspx
Here's an example:
public async Task DelayActionAsync(int delay, Action action)
{
await Task.Delay(delay);
action();
}