Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Menggunakan Kod Asynchronous dengan betul dalam Aplikasi Konsol C#?
Async Invocation dalam Aplikasi Konsol: Menyahsangka Mitos 'Up' dan 'Down'
Dalam C#, apabila menggunakan kaedah tak segerak, ia adalah lazimnya menegaskan bahawa penyegerakan mesti dikekalkan "atas" dan "bawah" timbunan panggilan. Walau bagaimanapun, dogma ini tidak berlaku untuk aplikasi konsol.
Pertimbangkan coretan kod ini:
public static async Task<int> SumTwoOperationsAsync() { // Simulate time-consuming operations var firstTask = GetOperationOneAsync(); var secondTask = GetOperationTwoAsync(); // Sum the results of the operations return await firstTask + await secondTask; } private static async Task<int> GetOperationOneAsync() { await Task.Delay(500); // Simulating operation delay return 10; } private static async Task<int> GetOperationTwoAsync() { await Task.Delay(100); // Simulating operation delay return 5; }
Menurut peraturan "atas dan bawah", nampaknya logik untuk menandakan fungsi Utama , di mana SumTwoOperationsAsync digunakan, sebagai tak segerak. Namun, andaian ini tidak betul. Aplikasi konsol tidak menyokong titik masuk tak segerak. Percubaan untuk berbuat demikian akan mengakibatkan ralat kompilasi yang menyatakan, "titik masuk tidak boleh ditandakan dengan pengubah suai 'async'."
Jadi, bagaimanakah kita menggunakan kod tak segerak dalam aplikasi konsol? Terdapat dua pendekatan utama:
static void Main() { MainAsync().Wait(); // Alternatively, to avoid wrapping exceptions in AggregateException: // MainAsync().GetAwaiter().GetResult(); } static async Task MainAsync() { // Async code goes here }
static void Main() { AsyncContext.Run(() => MainAsync()); } static async Task MainAsync() { // Async code goes here }
Untuk mendapatkan cerapan yang lebih komprehensif tentang aplikasi konsol tak segerak, lawati catatan blog yang disediakan. Ingat, peraturan "atas dan bawah" mungkin tidak digunakan dengan lancar dalam semua senario.
Atas ialah kandungan terperinci Bagaimanakah Saya Menggunakan Kod Asynchronous dengan betul dalam Aplikasi Konsol C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!