assolutamente non usare Goto in c#, ma neanche fattelo passare per la testa!!!!

per i semafori in c# esiste la classe Mutex o al limite se vuoi usare contatori usali dichiarati così:

codice:
private volatile Int32 contatore;
e per usarli usa blocchi loccati sennò non hai percezione del reale valore del contatore (più thread potrebbero modificarlo assieme)