I don’t know which version of C# you are using. But I think you could accomplish this by using the Task library. It would then look something like that.
public class PauseAndExecuter
{
public async Task Execute(Action action, int timeoutInMilliseconds)
{
await Task.Delay(timeoutInMilliseconds);
action();
}
}