Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya membuat kaedah utama aplikasi konsol saya tidak segerak?

Bolehkah saya membuat kaedah utama aplikasi konsol saya tidak segerak?

Susan Sarandon
Susan Sarandonasal
2025-02-01 16:56:10858semak imbas

Can I Make My Console Application's Main Method Asynchronous?

kaedah utama asynchronous dalam aplikasi konsol

Apabila cuba menetapkan kaedah utama dalam aplikasi konsol untuk tidak segerak, ralat mungkin ditemui: "Kaedah utama yang tidak dapat menentukan pengubah 'async' dalam kaedah utama aplikasi konsol".

had pengkompil

Secara sejarah, pengkompil Visual Studio mengehadkan penggunaan pengubah async pada kaedah utama. Ini adalah untuk menghalang pelaksanaan asynchronous tingkah laku penyegerakan semula jadi program konsol.

Sokongan utama asynchronous

bagaimanapun, bermula dengan Visual Studio 2017 Update 3 (15.3), C# menyokong kaedah utama asynchronous, selagi mereka mengembalikan tugas atau tugas

. Ini membolehkan struktur kod berikut:

Memahami tingkah laku

Dalam kaedah utama asynchronous, petunjuk kata kunci "menunggu" boleh menunggu objek (contohnya, tugas) untuk menyelesaikan kaedah, dan kemudian kembali ke kaedah. Walau bagaimanapun, dalam aplikasi konsol, pulangan kaedah utama akan menarik diri dari prosedur.
<code class="language-csharp">class Program
{
    static async Task Main(string[] args)
    {
        // 异步代码在此处
    }
}</code>

Elakkan prosedur dari keluar

Untuk mengelakkan prosedur dari keluar, perlu menyediakan konteks yang serasi dengan keserasian tak segerak untuk kaedah utama. Konteks ini mengekalkan program dalam keadaan aktiviti semasa operasi operasi tak segerak.

pilihan konteks

Perpustakaan NUGET:

Gunakan asyncContext dalam beg nito.asyncex nuget.

Asynchronous CTP: GoneralthreadaffineContext dalam CTP asynchronous (jika ada).

gelung utama adat:
    Gunakan asyncContext atau CTP asynchronous untuk merealisasikan pemilik draf anda sendiri.
  • menghalang benang utama
  • kaedah lain adalah untuk menyekat benang konsol utama sehingga kerja tak segerak selesai:
  • <:> Nota: getAwaiter ().

Atas ialah kandungan terperinci Bolehkah saya membuat kaedah utama aplikasi konsol saya tidak segerak?. 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