Coroutines are awkward to be fair. Did you try using something like this:
private IEnumerator coroutine;
//starting the coroutine
if (coroutine == null)
{
coroutine = YourIEnumerator();
StartCoroutine(coroutine);
}
// Stopping the coroutine
StopCoroutine(coroutine);
coroutine = null;