Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menjalankan kod asynchronous dalam kaedah utama aplikasi C# Console?

Bagaimanakah saya boleh menjalankan kod asynchronous dalam kaedah utama aplikasi C# Console?

Barbara Streisand
Barbara Streisandasal
2025-02-01 17:11:09584semak imbas

How Can I Run Asynchronous Code in a C# Console Application's Main Method?

Kod Asynchronous Running dalam kaedah utama C#: Workarounds untuk Batasan Async

Pengubahsuaian

tidak disokong secara langsung pada kaedah async dalam versi lama C#. Walau bagaimanapun, beberapa teknik membenarkan operasi tidak segerak dalam titik masuk aplikasi konsol anda. Main

Pendekatan Moden: Async Main (Visual Studio 2017 Update 3 dan kemudian)

Penyelesaian yang paling mudah, jika persekitaran pembangunan anda menyokongnya, adalah untuk mengisytiharkan

sebagai Main dan mengembalikan async: Task

<code class="language-csharp">class Program
{
    static async Task Main(string[] args)
    {
        // Your asynchronous code here...
    }
}</code>

menggunakan konteks tak segerak (untuk versi Visual Studio yang lebih tua)

Untuk versi Visual Studio yang lebih tua, atau jika anda lebih suka tidak menggunakan kaedah

async, memanfaatkan perpustakaan konteks tak segerak. Main dari pakej AsyncContext nuget adalah pilihan yang popular: Nito.AsyncEx

<code class="language-csharp">using Nito.AsyncEx;

class Program
{
    static void Main(string[] args)
    {
        AsyncContext.Run(() => MainAsync(args));
    }

    static async void MainAsync(string[] args)
    {
        // Your asynchronous code here...
    }
}</code>

menyekat benang utama (kurang ideal)

Walaupun berfungsi, secara langsung menghalang benang utama sehingga selesai operasi asynchronous pada umumnya kurang disukai kerana isu -isu yang berpotensi. Pendekatan ini menggunakan

: GetAwaiter().GetResult()

<code class="language-csharp">class Program
{
    static void Main(string[] args)
    {
        MainAsync(args).GetAwaiter().GetResult();
    }

    static async Task MainAsync(string[] args)
    {
        // Your asynchronous code here...
    }
}</code>

Nota penting: Menggunakan adalah penting. Elakkan GetAwaiter().GetResult() atau mengakses harta Wait() secara langsung, kerana ini boleh menutupi pengecualian dan membawa kepada isu-isu yang lebih keras-ke-debug. Result betul menyebarkan pengecualian. AggregateException

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjalankan kod asynchronous dalam kaedah utama aplikasi C# Console?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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