Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencapai Pelaksanaan Proses Asynchronous dalam .NET?

Bagaimana untuk Mencapai Pelaksanaan Proses Asynchronous dalam .NET?

Mary-Kate Olsen
Lepaskan: 2025-01-05 02:53:39
asal
532 orang telah melayarinya

How to Achieve Asynchronous Process Execution in .NET?

Pelaksanaan Proses Asynchronous dalam .NET

Dalam .NET, kaedah Process.Start() digunakan untuk melaksanakan aplikasi luaran atau fail kelompok . Walau bagaimanapun, kaedah ini adalah segerak, bermakna ia menyekat urutan panggilan sehingga proses selesai.

Untuk senario di mana pelaksanaan tak segerak diingini, anda mungkin tertanya-tanya sama ada terdapat persamaan dengan Process.Start() yang membolehkan anda menunggu itu selesai.

Jawapan

Walaupun tiada langsung tak segerak bersamaan Process.Start(), terdapat dua pendekatan untuk memenuhi keperluan ini:

1. Menggunakan Task.Run()

Jika anda hanya mahu menjalankan proses secara tidak segerak tanpa menunggu selesai, anda boleh menggunakan kaedah Task.Run():

void RunCommandAsync()
{
    Task.Run(() => Process.Start("command to run"));
}
Salin selepas log masuk

2. Menunggu Asynchronously untuk Proses Selesai

Jika anda perlu menunggu secara tak segerak sehingga proses selesai sebelum meneruskan, anda boleh memanfaatkan acara Exited dan TaskCompletionSource:

static Task<int> RunProcessAsync(string fileName)
{
    var tcs = new TaskCompletionSource<int>();

    var process = new Process
    {
        StartInfo = { FileName = fileName },
        EnableRaisingEvents = true
    };

    process.Exited += (sender, args) =>
    {
        tcs.SetResult(process.ExitCode);
        process.Dispose();
    };

    process.Start();

    return tcs.Task;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pelaksanaan Proses 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