Heim > Backend-Entwicklung > C#.Net-Tutorial > Asynchrone Programmierung in C# 4. Eine Fallanalyse der asynchronen und asynchronen Programmentwicklung

Asynchrone Programmierung in C# 4. Eine Fallanalyse der asynchronen und asynchronen Programmentwicklung

黄舟
Freigeben: 2017-09-16 11:19:49
Original
1927 Leute haben es durchsucht

Mit zunehmender Tiefe der Reihe zur Entwicklung asynchroner C#-Programme werden Sie feststellen, dass das Schreiben asynchroner Programme immer einfacher wird. Die Entwicklung der Dinge ist so: vom Einfachen zum Komplexen und dann zum Einfachen.

In C# 5.0 können wir eine schnelle asynchrone Programmentwicklung durch die Schlüsselwörter „async“ und „await“ wie folgt erreichen:


        static void Main(string[] args)
        {            var task = GetResultAsyc();
            Console.WriteLine(String.Format("Main 线程:{0}", Thread.CurrentThread.ManagedThreadId));            
            for (int i = 0; i < 100; i++)
            {
                Console.Write(".");
                Thread.Sleep(10);
            }
            Console.WriteLine();
            Console.WriteLine(String.Format("Main 线程:{0},获取异步执行结果:{1}", Thread.CurrentThread.ManagedThreadId, task.Result));
            
            Console.ReadLine();
        }        private static async Task<int> GetResultAsyc()
        {
            Console.WriteLine(String.Format("线程:{0}", Thread.CurrentThread.ManagedThreadId));            
            var result = await Task.Run(() => {
                Console.WriteLine(String.Format("Task 线程:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(5000);                return 10;
            });            return result;
        }
Nach dem Login kopieren

Programmbeschreibung:

1. Mit async gekennzeichnete Methoden geben Methoden an, die asynchrone Aufrufe durchführen können. Der Name dieser Methode sollte mit Async enden.

2. Wenn nach der Ausführung der asynchronen Methode ein Rückgabewert vorhanden ist, sollte der Rückgabetyp der asynchronen Methode Task sein. Wenn kein Rückgabewert vorhanden ist, sollte es sich um eine Aufgabe handeln.

3. In der mit async gekennzeichneten Methode können Sie Task öffnen oder andere asynchrone Methoden aufrufen. Verwenden Sie await, und der aufrufende Thread kehrt direkt zurück Führen Sie den Folgecode aus. Das aufgerufene Programm hinter „await“ wird in einem oder mehreren (abhängig von der Verschachtelung und anderen Faktoren) neuen Threads ausgeführt.

4. Nachdem die Funktion im neuen Thread ausgeführt wurde, wird das Rückgabeergebnis vom neuen Thread zurückgegeben (hier wird nicht an den aufrufenden Thread zurückgegeben, sondern der neue Thread legt das von ihm erhaltene Task.Result fest aufrufenden Thread).

5. Wenn Sie „await Task“ oder „Task.Result“ im aufrufenden Thread verwenden, wartet (blockiert) der aufrufende Thread, bis der neue Thread die Ausführung abgeschlossen hat und das Ergebnis erhält.

Die Programmausgabe lautet wie folgt:

Wie bereits erwähnt, unterstützen verwandte E/A, Netz usw. nach .Net Framework 4.5 alle Async und Wait Durch den Aufruf wird die gesamte asynchrone C#-Programmentwicklung basierend auf der oben genannten Version erheblich vereinfacht.

Jetzt hat die .Net-Webentwicklung damit begonnen, die asynchrone Programmierung populär zu machen, was zur Verbesserung des Web-IO-Durchsatzes beiträgt.

Das obige ist der detaillierte Inhalt vonAsynchrone Programmierung in C# 4. Eine Fallanalyse der asynchronen und asynchronen Programmentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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