C# Asynchrone

WBOY
Libérer: 2024-09-03 15:31:52
original
564 Les gens l'ont consulté

Une méthode spéciale en C# qui s'exécute de manière asynchrone est appelée Méthode asynchrone et une méthode peut être rendue asynchrone en utilisant le modificateur async et des tâches asynchrones peuvent être effectuées à l'aide de méthodes asynchrones en C# et l'exécution d'une méthode peut être suspendue en utilisant l'expression d'attente dans C# et si cette expression d'attente n'est pas présente dans une méthode qui a le modificateur async, cette méthode correspondante est exécutée de manière synchrone et asynchrone même si la méthode est une méthode asynchrone et que les types de retour d'une méthode asynchrone sont Task, Task, Void (pour les gestionnaires d'événements) et System.Threading.Tasks.ValueTask.

Syntaxe de la méthode asynchrone C# :

public async Task<int> Method_name()
{
// Block of code
}
Copier après la connexion
  • async est le modificateur utilisé.
  • Methodname est le nom donné à la méthode.

Fonctionnement de la méthode asynchrone en C#

  • Chaque fois que la logique du programme nécessite l'utilisation de tâches attendues, nous utilisons une méthode asynchrone grâce à laquelle nous pouvons effectuer des opérations qui prennent beaucoup de temps, comme télécharger quelque chose sur le Web, lire un fichier volumineux ou effectuer des calculs. qui sont vraiment complexes sans perturber ni bloquer l'exécution normale de l'application. Ceci est possible en utilisant les modificateurs async et wait dans notre programme.
  • La méthode asynchrone est appelée séparément avec la tâche qui lui est associée qui exécute la tâche qui n'est pas liée au déroulement du programme et elle est amenée à attendre dans laquelle elle aurait pu terminer la tâche et renvoie la valeur respective selon sa définition qui peut être utilisée dans les instructions suivantes ou il pourrait toujours exécuter la tâche pendant que le contrôle va à l'appelant de la méthode asynchrone et reprend l'exécution du programme sans interrompre l'exécution de la tâche et une fois la tâche terminée, le le reste de la méthode asynchrone est exécuté et renvoie la valeur respective selon sa définition.

Exemples de C# Asynchrone

Vous trouverez ci-dessous les exemples mentionnés :

Exemple n°1

Programme C# pour démontrer la méthode asynchrone dans un programme pour lire le contenu du fichier et déterminer le nombre de caractères dans le fichier.

Code :

using System;
using System.IO;
using System.Threading.Tasks;
//a class called check is defined
class Check
{
//main method is called
public static void Main()
{
//a file is created
String pat = @"D:\Ext.txt";
//an instance of the string writer class is created, and the path of the file is passed as a parameter to append text to the file
using (StreamWritersw = File.AppendText(pat))
{
//data to be appended to the file is included
sw.WriteLine("Welcome to StreamWriter class in C#");
//the instance of the streamwriter class is closed after writing data to the File
sw.Close();
}
//ReadFileusingAsync method is called by creating a task and the control moves to ReadFileusingAsync method
Task<int>taskname = ReadFileusingAsync();
//When the control reaches await modifier in ReadFileusingAsync method, the control returns here as the task is still going on and the following statements are executed
Console.WriteLine("Task is being performed by the asynchronous method and we are asked to wait until the completion of the task using await method");
string givemeinput = Console.ReadLine();
Console.WriteLine("The flow of the program is resumed once the task is completed by the asynchronous method and the value is returned " + givemeinput);
//We are waiting to receive the value from the task of asynchronous method in case the value is not returned yet.
taskname.Wait();
//We have used Result method to obtain the value returned from the asynchronous method after the completion of task assigned to it
var z = taskname.Result;
Console.WriteLine("The number of characters in the file are: " + z);
Console.WriteLine("The program has completed its normal execution and the asynchronous method has read the file to count the number of characters in the file");
Console.ReadLine();
}
static async Task<int>ReadFileusingAsync()
{
string fileread = @"D:\Ext.txt";
//The following statements are executed which can take a longer time
Console.WriteLine("We have opened the file to read the contents of the file");
int counter = 0;
using (StreamReader read = new StreamReader(fileread))
{
//await modifier is used to ask the caller function to wait till the reading of the file is complete
string vart = await read.ReadToEndAsync();
counter += vart.Length;
//This is the unnecessary code that is time consuming we have included for the sake of explanation
for (int r = 0; r < 20000; r++)
{
int z = vart.GetHashCode();
if (z == 0)
{
counter--;
}
}
}
Console.WriteLine("We are done reading the file");
return counter;
}
}
Copier après la connexion

Sortie :

C# Asynchrone

Explication :

  • Dans le programme ci-dessus, une classe appelée check est définie, puis la méthode principale est appelée dans laquelle nous créons un fichier et écrivons son contenu dans le fichier.
  • Ensuite, une tâche est créée qui appelle la méthode asynchrone ReadFileusingAsync et le contrôle se déplace vers cette méthode dans laquelle la tâche de lecture du contenu du fichier est effectuée.
  • Ensuite, la longueur des caractères est obtenue en utilisant la fonction length lors de la lecture du contenu du fichier et celle-ci est renvoyée à la méthode appelante.
  • La méthode appelante attend que le contrôle y revienne, puis le déroulement normal du programme reprend pour afficher le résultat.

Exemple n°2

Programme C# pour démontrer la méthode asynchrone dans un programme.

Code :

using System;
using System.Threading.Tasks;
//a class called check is defined
class Check
{
static void Main()
{
while (true)
{
//the asynchronous method is called.
keeptrying();
string res = Console.ReadLine();
Console.WriteLine("The input given by the user while the computation is going on by the asynchronous method is: " + res);
}
}
static async void keeptrying()
{
//the caller function is asked to await
int t = await Task.Run(() =>compute());
Console.WriteLine("The total digits count in the string is: " + t);
}
static intcompute()
{
int counter = 0;
for (int a = 0; a < 10; a++)
{
for (int b = 0; b < 1000; b++)
{
string value = b.ToString();
counter += value.Length;
}
}
return counter;
}
}
Copier après la connexion

Sortie :

C# Asynchrone

Explication :

  • Dans le programme ci-dessus, une classe appelée check est définie.
  • Ensuite, la méthode principale est appelée dans laquelle la méthode asynchrone est appelée et le contrôle se déplace vers la méthode asynchrone où le nombre total de chiffres dans une chaîne est calculé, ce qui demande à la méthode appelante d'attendre pendant que la méthode principale continue d'afficher le entrée fournie par l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal