Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menunggu Proses Keluar secara Asynchronous dalam C# Tanpa Membekukan GUI?

Bagaimanakah Saya Boleh Menunggu Proses Keluar secara Asynchronous dalam C# Tanpa Membekukan GUI?

Mary-Kate Olsen
Lepaskan: 2025-01-04 14:25:43
asal
432 orang telah melayarinya

How Can I Asynchronously Wait for Process Exit in C# Without Freezing the GUI?

Menunggu Proses Keluar Secara Asynchronous

Dalam banyak aplikasi, adalah penting untuk menunggu proses untuk keluar sebelum meneruskan lebih lanjut. Walau bagaimanapun, menggunakan Process.WaitForExit() boleh menyebabkan antara muka pengguna grafik (GUI) menjadi beku. Untuk mengelakkan isu ini, penyelesaian berasaskan acara atau berasaskan benang diperlukan.

Pendekatan Berasaskan Peristiwa

Setakat .NET 4.0/C# 5, async corak menyediakan cara yang lebih elegan untuk mewakili proses menunggu. Kaedah WaitForExitAsync() boleh ditambah pada kelas Proses, membolehkan aplikasi menunggu secara tak segerak untuk proses keluar:

public static Task WaitForExitAsync(this Process process, CancellationToken cancellationToken = default(CancellationToken))
Salin selepas log masuk

Di dalam kaedah:

  • Jika proses telah pun keluar, kaedah tersebut mengembalikan tugasan yang telah selesai serta-merta.
  • Jika tidak, a TaskCompletionSource dibuat dan sifat EnableRaisingEvents proses ditetapkan kepada benar.
  • Pengendali acara dilampirkan pada acara Keluar proses, yang menetapkan hasil sumber penyelesaian tugas apabila proses keluar.
  • Jika token pembatalan disediakan, ia didaftarkan untuk membatalkan tugas jika dipanggil.
  • Tugas dikembalikan, yang mana selesai apabila proses keluar atau apabila token pembatalan digunakan.

Penggunaan

Untuk menggunakan kaedah WaitForExitAsync():

public async void Test()
{
    var process = new Process("processName");
    process.Start();
    await process.WaitForExitAsync();

    // Do some fun stuff here...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menunggu Proses Keluar secara Asynchronous dalam C# Tanpa Membekukan GUI?. 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