Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Memanggil Kaedah Async daripada Kaedah Utama Segerak dalam C#?

Bagaimanakah Saya Memanggil Kaedah Async daripada Kaedah Utama Segerak dalam C#?

DDD
Lepaskan: 2024-12-31 02:29:08
asal
942 orang telah melayarinya

How Do I Call an Async Method from a Synchronous Main Method in C#?

Memanggil Kaedah Async dari Utama: Panduan Komprehensif

Pengenalan

Persoalannya timbul apabila pembangun perlu menggunakan kaedah tak segerak daripada konteks segerak tradisional seperti kaedah Utama. Keadaan ini sering muncul apabila meneroka alam pengaturcaraan async dalam C#.

Masalah

Memandangkan kaedah tak segerak berikut:

public class test
{
    public async Task Go()
    {
        // ... various async operations
    }
}
Salin selepas log masuk

The dilema timbul apabila cuba memanggil Pergi dari kaedah Utama, entri segerak program titik.

Penyelesaian

Dalam C# 7.1 dan versi yang lebih baru, memanggil kaedah async daripada Utama adalah mudah:

static async Task Main(string[] args)
{
    test t = new test();
    await t.Go();
    Console.WriteLine("finished");
    Console.ReadKey();
}
Salin selepas log masuk

Kod ini memastikan bahawa Operasi tak segerak Go selesai sebelum program tamat.

Untuk versi C# sebelum 7.1, pendekatan berbeza diperlukan:

static void Main(string[] args)
{
    test t = new test();
    t.Go().Wait();
    Console.WriteLine("finished");
    Console.ReadKey();
}
Salin selepas log masuk

Memanggil Tunggu() menyekat urutan semasa sehingga operasi tak segerak Go berakhir.

Faedah Kaedah Async

Menghapuskan panggilan balik, yang boleh menjadikan kod rumit dan sukar untuk dikekalkan, adalah kelebihan utama pengaturcaraan tak segerak menggunakan kata kunci async. Ia membolehkan aliran pelaksanaan yang bersih dan berurutan sambil membenarkan operasi lain diteruskan secara serentak.

Atas ialah kandungan terperinci Bagaimanakah Saya Memanggil Kaedah Async daripada Kaedah Utama Segerak dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan