Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggunakan Parameter Output dengan Kaedah Asynchronous dalam .NET?

Bagaimanakah Saya Boleh Menggunakan Parameter Output dengan Kaedah Asynchronous dalam .NET?

Susan Sarandon
Lepaskan: 2025-01-03 05:42:39
asal
655 orang telah melayarinya

How Can I Use Output Parameters with Asynchronous Methods in .NET?

Asynchrony and Out Parameter: A Dilema

Pemaju sering menghadapi keperluan untuk menulis kaedah tak segerak dengan parameter output, tetapi rangka kerja .NET menimbulkan cabaran dalam hal ini.

The Isu

Coretan kod berikut menggambarkan masalah:

public async void Method1()
{
    int op;
    int result = await GetDataTaskAsync(out op);
}
Salin selepas log masuk

Kod ini cuba mencipta kaedah async dengan parameter output, tetapi ciri sedemikian tidak tersedia dalam .NET Rangka Kerja.

The Penaakulan

Menurut Lucian Wischik, seorang jurutera Microsoft, had ini berpunca daripada cara kaedah async dilaksanakan dalam CLR. Ia diubah oleh pengkompil menjadi objek mesin keadaan, yang tidak mempunyai mekanisme selamat untuk menyimpan alamat keluar atau parameter rujukan.

Penyelesaian

Penyelesaian biasa ialah dengan kaedah async mengembalikan Tuple:

public async Task Method1()
{
    var tuple = await GetDataTaskAsync();
    int op = tuple.Item1;
    int result = tuple.Item2;
}

public async Task<Tuple<int, int>> GetDataTaskAsync()
{
    //...
    return new Tuple<int, int>(1, 2);
}
Salin selepas log masuk

Pendekatan ini menyediakan cara untuk menghantar berbilang nilai kembali daripada kaedah async tanpa menggunakan parameter keluar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Parameter Output dengan Kaedah Asynchronous dalam .NET?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan