You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mchsamples-.net-core/ex_050_009_signalisation/Program.cs

84 lines
3.5 KiB

using System;
using System.Threading;
namespace ex_050_009_notifications_entre_threads
{
class Program
{
static void Main(string[] args)
{
//préparation de deux signaux
var signal = new AutoResetEvent(false);
var signal2 = new AutoResetEvent(false);
//thread qui joue 4 fois le refrain de la chanson
new Thread(() =>
{
for (int i = 0; i < 4; i++)
{
//attend le signal pour écrire le refrain
signal.WaitOne();
Console.WriteLine("\tUn'jolie fleur dans une peau d'vache");
Console.WriteLine("\tUn'jolie vach' déguisée en fleur,");
Console.WriteLine("\tQui fait la belle et qui vous attache,");
Console.WriteLine("\tPuis, qui vous mèn' par le bout du coeur");
Console.WriteLine();
//envoie le signal pour le prochain couplet
signal2.Set();
}
//nettoyage
signal.Dispose();
signal2.Dispose();
}).Start();
Console.WriteLine("Jamais sur Terre, il n'y eut d'amoureux");
Console.WriteLine("Plus aveugles que moi dans tous les âges,");
Console.WriteLine("Mais faut dir' qu'je m'étais crevé les yeux");
Console.WriteLine("En regardant de trop près son corsage...");
Console.WriteLine();
//envoie le signal pour le prochain refrain
signal.Set();
//attend le signal pour écrire le prochain couplet
signal2.WaitOne();
Console.WriteLine("Le ciel l'avait pourvu' des mille appâts");
Console.WriteLine("Qui vous font prendre feu dès qu'on y touche,");
Console.WriteLine("L'en avait tant que je ne savais pas");
Console.WriteLine("Ne savais plus où donner de la bouche...");
Console.WriteLine();
//envoie le signal pour le prochain refrain
signal.Set();
//attend le signal pour écrire le prochain couplet
signal2.WaitOne();
Console.WriteLine("Ell'n'avait pa de tête, ell'n'avait pas");
Console.WriteLine("L'esprit beaucoup plus grand qu'un dé à coudre,");
Console.WriteLine("Mais pour l'amour on ne demande pas");
Console.WriteLine("Aux filles d'avoir inventé la poudre...");
Console.WriteLine();
//envoie le signal pour le prochain refrain
signal.Set();
//attend le signal pour écrire le prochain couplet
signal2.WaitOne();
Console.WriteLine("Puis un jour elle a pris la clef des champs");
Console.WriteLine("En me laissant à l'âme un mal funeste");
Console.WriteLine("Et toutes les herbes de la Saint-Jean");
Console.WriteLine("N'ont pas pu me guérir de cette peste...");
Console.WriteLine();
Console.WriteLine("J'lui en ai bien voulu, mais à présent");
Console.WriteLine("J'ai plus d'rancune et mon coeur lui pardonne");
Console.WriteLine("D'avoir mis mon coeur à feu et à sang");
Console.WriteLine("Pour qu'il ne puisse plus servir à personne...");
Console.WriteLine();
//envoie le signal pour le prochain refrain
signal.Set();
}
}
}