Cómo definir un predicado como un argumento de función

Quiero poder escribir algo como

void Start(some condition that might evaluate to either true or false) { //function will only really start if the predicate evaluates to true } 

Supongo que debe ser algo de la forma:

 void Start(Predicate predicate) { } 

¿Cómo puedo verificar dentro de mi función de Inicio siempre que el predicado se evalúe como verdadero o falso? ¿Mi uso de un predicado es correcto?

Gracias