Yea - you may be getting bit by the automatic expiration.
Your re-vamp code looks better, but I'd suggest during your 'while()' that you also put a "Wait(0.1)" so that you're not in a total tight-loop situation which might cause other issues with other tasks on the cRio. I don't know of any such issues, but a tight loop isn't a good thing either.
Code:
Timer timer;
timer.Reset();
timer.Start();
while (timer.Get() < 2.0)
{
myRobot.Drive(0.6, 0.0);
Wait(0.1);
}
myRobot.Drive(0.0, 0.0);