InvokeRepeating can't be cancelled

Hello,
I’m new to Unity and tried to learn scripting with C# so I decided to start with a Towerdefence game.
Everything worked fine with the project except the turret ai.
I tried to solve it with a projectile, everytime something collides with the turret calls the function InvokeRepeating
which should create a projectile which move towards an enemy.
Now my problem is, that the turret doesn’t stop the InvokeRepeating command because its always called with OnTriggerEnter();
so I tried to solve it with OnTriggerExit() but this doesn’t work if the collider (in this case the mob) gets destroyed
while it is in the collision sphere of the tower so the Invoke won’t get cancelled.
Another problem is if I set the hp of the mob to a higher value, it will enter and exit the collision sphere,
but if
one random mob exits the sphere while other mobs are inside the sphere, the turret stops spawning projectiles because no
new mob enters the collision sphere.

I hope you can help me and understood the main problem.

Here’s the code:
(I tried to solve it with another way(OnTriggerStay) but it doesnt worked)

using UnityEngine;
using System.Collections;

public class Tower1 : MonoBehaviour
{

	public GameObject projectile001;
	public bool already = false;
	
	void OnTriggerStay (Collider collider) 
	{
		if (collider == null)
			CancelInvoke("Fire001");
	}
	
	void OnTriggerEnter()
	{
		InvokeRepeating("Fire001",0,1f);
	}
	void OnTriggerExit ()
	{
		CancelInvoke("Fire001");
	}
	
	void Fire001() 
	{
		already = true;
		if (already == true){
		GameObject newproj001 = (GameObject)Instantiate(projectile001, transform.position,transform.rotation);
		newproj001.name = "projectile001";
		already = false;}
	}
}

Since there’s countless possible reasons why the script ‘fails’, I suggest:

1- slightly change all your trigger function declarations to this:

void OnTriggerEnter(Collider other)
void OnTriggerExit(Collider other)
void OnTriggerStay(Collider other)

2- inside all the functions type

Debug.LogWarning(other.name + " is entering/ staying/ leaving the collider area ", gameObject);

To understand what’s going on. Just enter play mode and you’ll start to see what happens when a single target enters, stays, and exits.