How to delay a timer when it's run the first time in update method not using a coroutine

In the code below I am resetting a timer after a duration maxiTime within the update method. I want to delay the timer before it begins to run for a certain duration. I believe this could be done with a coroutine, but I am using StopAllCoroutines, so I need to do this within the update method. How can I get the delay only before the first run?

        timeElapsed +=1;
if(timeElapsed >= maxiTime) {

timeElapsed = 0;

Debug.Log ("Thank You!");
}

• It is not exactly elegant but you can use a second timer if you insist the code to be strictly in Update. Or you can try to use Invoke. Or if you can instead stop coroutines separately and use coroutine for the delay. – Nikaas Jul 21 '17 at 18:38
• Start() { timeElapsed = -1; } ? – Draco18s no longer trusts SE Jul 21 '17 at 19:22
• @Draco18s Thanks, starting from a negative value solved the issue – SuperHyperMegaSomething Jul 21 '17 at 20:28
• Hmm.. the root problem might be your use of StopAllCoroutines in the first place. If you're only able to use coroutines that all stop together when any one of them needs to be stopped, that's going to be very limiting on what you can do with them. Depending on your situation, you may be able to cache a reference to the coroutines you need to stop, and stop them individually with StopCoroutine(_coroutineReference) without interfering with your other coroutine behaviours. If you want help with that, it could be worth asking as a separate question. – DMGregory Jul 22 '17 at 0:55

Start() {