C# Asynchron

WBOY
Freigeben: 2024-09-03 15:31:52
Original
589 Leute haben es durchsucht

Eine spezielle Methode in C#, die asynchron ausgeführt wird, wird als asynchrone Methode bezeichnet. Eine Methode kann mithilfe des Modifikators async asynchron gemacht werden. Asynchrone Aufgaben können mithilfe asynchroner Methoden in C# ausgeführt werden und die Ausführung einer Methode kann mithilfe des Warteausdrucks angehalten werden C# und wenn dieser Warteausdruck in einer Methode mit dem Modifikator async nicht vorhanden ist, wird die entsprechende Methode synchron und asynchron ausgeführt, obwohl die Methode eine asynchrone Methode ist und die Rückgabetypen einer asynchronen Methode Task, Task, Void (für Ereignishandler) und System.Threading.Tasks.ValueTask.

Syntax der asynchronen C#-Methode:

public async Task<int> Method_name()
{
// Block of code
}
Nach dem Login kopieren
  • async ist der verwendete Modifikator.
  • Methodenname ist der Name, der der Methode gegeben wird.

Funktionsweise der asynchronen Methode in C#

  • Wenn die Logik im Programm die Verwendung abwartbarer Aufgaben erfordert, verwenden wir eine asynchrone Methode, mit der wir Vorgänge ausführen können, deren Abschluss lange dauert, wie z. B. das Herunterladen von etwas aus dem Internet, das Lesen einer großen Datei oder das Durchführen von Berechnungen die wirklich komplex sind, ohne die normale Ausführung der Anwendung zu stören oder zu blockieren. Dies ist möglich, indem wir in unserem Programm die Modifikatoren „async“ und „await“ verwenden.
  • Die asynchrone Methode wird separat mit der ihr zugeordneten Aufgabe aufgerufen, die die Aufgabe ausführt, die nicht mit dem Programmablauf zusammenhängt, und wartet darauf, dass sie die Aufgabe hätte beenden können, und gibt den entsprechenden Wert zurück seine Definition, die in den folgenden Anweisungen verwendet werden kann, oder es könnte die Aufgabe noch ausführen, während die Steuerung an den Aufrufer der asynchronen Methode geht und die Ausführung des Programms fortsetzt, ohne die Ausführung der Aufgabe zu unterbrechen, und sobald die Aufgabe abgeschlossen ist, wird die Der Rest der asynchronen Methode wird ausgeführt und gibt den entsprechenden Wert gemäß seiner Definition zurück.

Beispiele für C# Asynchronous

Im Folgenden finden Sie die genannten Beispiele:

Beispiel #1

C#-Programm zur Demonstration der asynchronen Methode in einem Programm, um den Inhalt der Datei zu lesen und die Anzahl der Zeichen in der Datei zu bestimmen.

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;
}
}
Nach dem Login kopieren

Ausgabe:

C# Asynchron

Erklärung:

  • Im obigen Programm wird eine Klasse namens check definiert und dann die Hauptmethode aufgerufen, in der wir eine Datei erstellen und Inhalte in die Datei schreiben.
  • Dann wird eine Aufgabe erstellt, die die asynchrone Methode ReadFileusingAsync aufruft, und die Steuerung wechselt zu der Methode, in der die Aufgabe des Lesens des Inhalts der Datei ausgeführt wird.
  • Dann wird die Länge der Zeichen mithilfe der Längenfunktion beim Lesen des Inhalts der Datei ermittelt und an die aufrufende Methode zurückgegeben.
  • Die aufrufende Methode wartet, bis die Steuerung zu ihr zurückkehrt, und dann wird der normale Programmablauf wieder aufgenommen, um das Ergebnis anzuzeigen.

Beispiel #2

C#-Programm zur Demonstration der asynchronen Methode in einem Programm.

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;
}
}
Nach dem Login kopieren

Ausgabe:

C# Asynchron

Erklärung:

  • Im obigen Programm ist eine Klasse namens check definiert.
  • Dann wird die Hauptmethode aufgerufen, in der die asynchrone Methode aufgerufen wird, und die Steuerung geht zur asynchronen Methode über, wo die Gesamtzahl der Ziffern in einer Zeichenfolge berechnet wird, die die aufrufende Methode auffordert, zu warten, während die Hauptmethode weiterhin die anzeigt Eingabe durch den Benutzer.

Das obige ist der detaillierte Inhalt vonC# Asynchron. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage