I want spawner not working while invisible.

Hello Guys.
My problem is; I have a spawner and I want this spawner not working while invisible. But After invisible will work. But codes not working pls help me.

public class HazardSpawner : MonoBehaviour
{
    [SerializeField] GameObject hazardGameObject;
    Renderer m_Renderer;

    bool spawn = true;

    void Start()
    {
         m_Renderer = GetComponent<Renderer>();
            StartCoroutine(HazSpawner());
    }

    void Update()
    {
        HazSpawner();
    }

  
    IEnumerator HazSpawner()
    {

        if (m_Renderer.isVisible)
        {
            while (spawn)
            {

                yield return new WaitForSeconds(Random.Range(1f, 2f));
                Instantiate(hazardGameObject, transform.position, Quaternion.identity);

            }
        }
           
                 
    }

   
    private void OnBecameVisible()
    {
        enabled = true;
    }
    private void OnBecameInvisible()
    {

        enabled = false;
    }

}

Change this:

if (m_Renderer.isVisible)
{
    while (spawn)
    {
        yield return new WaitForSeconds(Random.Range(1f, 2f));
        Instantiate(hazardGameObject, transform.position, Quaternion.identity);
    }
}

to this:

while (spawn)
{
    if (m_Renderer.isVisible)
    {
        yield return new WaitForSeconds(Random.Range(1f, 2f));
        Instantiate(hazardGameObject, transform.position, Quaternion.identity);
    }
    else {
        yield return null;
    }
}