C# -Quatre Modèles en mode d'exécution Asynchrone
J'ai entendu dire qu'il y a quatre modèles en mode d'exécution asynchrone.
Il y a quatre modèles dans async déléguer l'exécution: le sondage, en Attente d'Achèvement, Notification de fin de, et de "Fire and Forget"
Quand j'ai le code suivant :
class AsynchronousDemo
{
public static int numberofFeets = 0;
public delegate long StatisticalData();
static void Main()
{
StatisticalData data = ClimbSmallHill;
IAsyncResult ar = data.BeginInvoke(null, null);
while (!ar.IsCompleted)
{
Console.WriteLine("...Climbing yet to be completed.....");
Thread.Sleep(200);
}
Console.WriteLine("..Climbing is completed...");
Console.WriteLine("... Time Taken for climbing ....{0}",
data.EndInvoke(ar).ToString()+"..Seconds");
Console.ReadKey(true);
}
static long ClimbSmallHill()
{
var sw = Stopwatch.StartNew();
while (numberofFeets <= 10000)
{
numberofFeets = numberofFeets + 100;
Thread.Sleep(10);
}
sw.Stop();
return sw.ElapsedMilliseconds;
}
}
1) Quel est le motif le code ci-dessus mis en œuvre ?
2) Pouvez-vous expliquer le code ,comment puis-je mettre en place le reste ..?
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez là est le motif d'Interrogation. Dans ce modèle vous poser continuellement des "Sommes-nous encore là?" Le
while
boucle est en train de faire le blocage. LeThread.Sleep
empêche le processus de manger des cycles de PROCESSEUR.Attendre la fin est le "je t'appelle" approche.
Donc dès que
WaitOne
est appelé bloquant jusqu'à ce que l'escalade est terminée. Vous pouvez effectuer d'autres tâches avant de les bloquer.Avec Notification de fin de vous en disant: "Vous m'appelez, je ne vais pas vous appeler."
Il n'y a pas de blocage ici, car
Callback
va être notifié.Et le feu et oublier serait
Il n'y a également aucun blocage ici, parce que vous n'avez pas de soins lors de l'escalade est fini. Comme son nom l'indique, vous oublier. Vous dites: "Ne m'appelez pas, je ne vais pas vous appeler, mais encore, ne m'appelez pas."
C'est classique d'interrogation. - Vérifier, le sommeil, vérifier de nouveau,
Ce code est d'Interrogation:
C'est la clé, vous gardez le contrôle si oui ou non c'est terminé.
Ce code n'est pas vraiment favorable à tous les quatre, mais un peu de code n'.
Le "Début" de la méthode est Asynchrone. Il donne naissance à un nouveau processus.
Nous pourrions faire de chacun des moyens que vous demande avec ce code: