首頁  >  文章  >  後端開發  >  C# 等待

C# 等待

WBOY
WBOY原創
2024-09-03 15:04:52435瀏覽

C# 程式語言中的await 關鍵字用來掛起所有包含的非同步方法,直到非同步方法所呈現的操作完成為止。為了讓開發人員以非同步方式呼叫多個函數,async 和await 被高度使用和推薦。只需簡單地實作await 函數和async,就可以繼承非同步程式設計的幾乎所有功能。現在讓我們繼續了解實作 wait 關鍵字的標準語法。

文法:

await 關鍵字的標準語法很簡單,它包括關鍵字後跟函數或方法。文法如下:

await anyFunction();

這裡,我們的語法以await關鍵字開頭,後面跟著一個函數,該函數可以是程式中的任何函數。自由是在語法中呼叫並將等待關鍵字傳遞給任何方法類別或函數。

await 關鍵字在 C# 中如何運作?

接下來,我們將了解 wait 關鍵字在 C# 中的實際工作原理,基本上,await 關鍵字會暫停非同步方法的操作,直到操作數完成操作。然後,非同步操作完成後,await關鍵字如果有則回傳操作結果。同樣的await關鍵字不會阻止非同步方法的任何威脅,並且在掛起封閉的非同步方法之後,程式的控制權將傳回給程式呼叫者。因此,這就是await 關鍵字的工作原理以及如何在必須實現await 關鍵字的情況下對流程進行程式設計。繼續,我們現在將實現await關鍵字並看看它在現實生活中的範例中如何運作。

C# 範例等待

現在我們已經了解了await關鍵字是什麼以及它是如何運作的,讓我們繼續透過範例來示範await關鍵字。對於我們的第一個範例,我們將簡單地使用一個方法,帶有 print 語句和await 關鍵字。

範例#1

代碼:

using System;
using System.Threading.Tasks;
class Program {
static void Main(string[] args) {
first_meth();
Console.ReadKey();
}
public static async Task first_meth() {
await Task.Run(() =>  {
for (int a = 0 ; a < 2; a++ )  {
Console.WriteLine(" Simple demonstration of await keyword.");
}
});
}
}

輸出:

C# 等待

程式碼說明:這是await關鍵字的一個非常簡單的演示,其中我們有一個方法和main方法。 main方法呼叫第一個方法並且必然會被執行。此方法具有await 關鍵字的實作。輸出將是列印兩次的列印語句。

範例#2

正如預期的那樣,輸出是列印了兩次的語句。對於我們的下一個範例,我們將有兩個完全不依賴的不同方法,我們將透過 main 方法呼叫它們。程式碼如下:

代碼:

using System;
using System.Threading.Tasks;
class Program {
static void Main(string[] args) {
exam1();
exam2();
Console.ReadKey();
}
public static async Task exam1()  {
await Task.Run(() =>  {
for (int a = 0 ; a < 5 ; a++ )  {
Console.WriteLine(" This will be printed 5 times.");
}
});
}
public static void exam2() {
for (int a = 0 ; a < 2 ; a++ ) {
Console.WriteLine(" This statement will be printed 2 times. ");
}
}
}

輸出:

C# 等待

程式碼說明:對於我們的第一個範例,我們有兩個完全獨立的不同方法,並且我們從程式的主方法中呼叫了這些方法。從所需的系統檔案開始,我們有了帶有 main 方法的類別程序,在 main 方法中我們呼叫了要宣告的兩個方法。我們的第一個方法 exam1 啟動,使用await關鍵字,後面跟著一個lambda函數和一個列印輸出語句的語句。然後我們有第二個方法 exam2,它有一個 for 語句,它將多次列印輸出語句。

範例#3

正如預期的那樣,輸出語句如程式碼所述,接下來,我們將用另一個範例實作await 關鍵字,其中我們將擁有三個方法和很少的列印語句。

代碼:

using System;
using System.Threading.Tasks;
class Program {
static void Main(string[] args) {
Console.WriteLine("\n");
callMethod();
Console.ReadKey();
}
public static async void callMethod() {
Task<int> task = exam1();
exam2();
int total = await task;
exam3(total);
}
public static async Task<int> exam1() {
int total = 0;
await Task.Run(() =>
{
for (int a = 0 ; a < 10 ; a++ )  {
Console.WriteLine(" This is a simple statement. ");
total += 1;
}
});
return total;
}
public static void exam2()  {
for (int a = 0 ; a < 2 ; a++ )  {
Console.WriteLine(" This is a second output statement.");
}
}
public static void exam3(int total) {
Console.WriteLine(" Total number of statements from first method are   " + total);
}
}

輸出:

C# 等待

程式碼說明:對於我們的第三個範例,我們有三個不同的方法,並且我們從 main 方法呼叫這些方法。在我們的 main 方法中,我們呼叫 callMethod,它有一個呼叫 exam1 方法的任務,因此 exam1 被執行。根據程序,這裡的 exam1 方法不會首先執行,因為它有await關鍵字,所以它將移動到下一個方法,即 exam1 ,並且將執行 exam2 方法,這是一條語句,打印兩次,如for 循環。然後我們的 exam1 方法將會被列印,然後是 exam3,exam3 方法是一個單獨的語句。總共將列印 13 個輸出語句。最後一條語句將列印我們從 exam1 方法列印語句的次數。如同解釋的總共 13 個列印語句,使用多種方法簡單執行await關鍵字。

結論

總而言之,await 關鍵字用於掛起事件並將程式的控制權傳回給呼叫者。當我們有多種方法和函數時,此功能被廣泛使用。 wait 關鍵字用於將控制權傳回給呼叫者,它只能在非同步方法中應用。

以上是C# 等待的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 物件到 XML下一篇:C# 物件到 XML