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")); }
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; }
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!