Triggers and SendMessages. C#

I am a bit confused about the SendMessages a bit. So I created a little example mock up level to learn about it and mess with it a bit more. I am using C# to write these scripts and I am a bit lost. I have two objects. One is the player who has a flashlight attached to him (The Light holds the script to turn the light on and off) and there is a collection trigger in front of him. I made it work so if the player hits the trigger it will send a message to the light to turn it off for a given amount of time. Here are my two scripts.

Trigger.cs:

using UnityEngine;
using System.Collections;

public class Trigger : MonoBehaviour {
	
	void OnTriggerEnter(Collider col){
		if(col.gameObject.tag == "Player"){
			gameObject.Find("Light").SendMessage("blinkingDelay", 5.0f);
		}
	}
}

And here is the flashlight.

Flashlight.cs

using UnityEngine;
using System.Collections;

public class Flashlight : MonoBehaviour {
	
	public bool power = true;
	
	
	// Update is called once per frame
		
	
	public IEnumerator blinkingDelay(float holdamount){
	    power = false;
		yield return new WaitForSeconds(holdamount);
		power = true;
	}
}

Now I know in order to use yield I have to call the function with: StartCoroutine. But How do I do this with SendMessage?

The error I get btw is this: “sendmessage blinkingDelay has no receiver”

To use SendMessage() you need to Apply Flashlight.cs script on game object named “Light”.
And inside Trigger.cs
that shoud be
GameObject.Find(“Light”).SendMessage(“blinkingDelay”, 5.0f);

not gameObject.Find(“Light”).SendMessage(“blinkingDelay”, 5.0f);

I try to avoid SendMessage whenever possible. I don’t have Pro version, so I didn’t profile my scripts to actually compare then with direct calls.

You can use
StartCoroutine(GameObject.Find(“Light”).GetComponent().blinkingDelay(5.0f));