18.9.20

C# Task Course 100m

Quelques liens utiles :
https://www.c-sharpcorner.com/article/async-and-await-in-c-sharp/
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/
-----------------------------------------------------------------------------------------------------
public class Course100M
{
public static bool isGagnant = false;
public static int vainqueur = 0;
public static int nombreParticipants = 5;
static async Task Main(string[] args)
{
Course100M.isGagnant = false;
Console.WriteLine("A vos marques...");
Thread.Sleep(1000);
Console.WriteLine("Prêts...");
Thread.Sleep(1000);
Console.WriteLine("Partez!!!");
int vainqueurx = await DepartDeLaCourse();
Console.WriteLine($"{vainqueurx}");
Console.WriteLine("-->Course terminée<--");
Console.ReadKey();
}
public static async Task<int> DepartDeLaCourse()
{
await Task.Run(() =>
{
for (int i = 1; i <= Course100M.nombreParticipants; i++)
{
_ = Coureur(i);
}
});
while (Course100M.vainqueur == 0)
{
Thread.Sleep(1000);
Console.WriteLine("Quel suspens...");
}
return Course100M.vainqueur;
}
public static async Task/*<int>*/ Coureur(int numCoureur)
{
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token;
await Task.Run(() =>
{
//100 mètres
for (int i = 1; i <= 10; i++)
{
Thread.Sleep(500 - numCoureur);
//Console.WriteLine($"{numCoureur}. {i * 10} mètres");
string x = "";
for (int y = 1; y <= i; y++)
{
x = x + " --> ";
}
if (i * 10 != 100)
{
Console.WriteLine($"{numCoureur}. {x}");
} else
{
Console.WriteLine($"{numCoureur}. Terminé!!!");
if (Course100M.isGagnant == false)
{
Course100M.isGagnant = true;
Console.WriteLine("------------------------");
Console.WriteLine($"VAINQUEUR : {numCoureur}");
Console.WriteLine("------------------------");
Course100M.vainqueur = numCoureur;
source.Cancel();
}
}
}
}, token);
}
}

Aucun commentaire: