Penyelesaian masalah hang dengan output besar ProcessStartInfo.WaitForExit()
dalam .net, aliran output standard yang besar (mis., 7MB atau lebih) boleh menyebabkan ProcessStartInfo
hang selama -lamanya. Ini kerana saiz penampan lalai untuk output standard adalah terhad. Untuk menyelesaikannya, bacaan tak segerak diperlukan untuk mengelakkan limpahan penampan. WaitForExit()
dan StandardOutput
, menggunakan bacaan tak segerak untuk mengendalikan aliran output yang berpotensi besar dengan cekap: StandardError
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
untuk memberi isyarat apabila aliran output dan ralat telah dibaca sepenuhnya, menghalang benang utama daripada menyekat selama -lamanya. Penambahan waktu menyediakan satu mekanisme untuk mengendalikan situasi di mana proses itu mungkin tidak lengkap dalam jangka masa yang munasabah. Ingatlah untuk mengendalikan kes masa tamat, berpotensi membunuh proses untuk mengelakkan kebocoran sumber. AutoResetEvent
Atas ialah kandungan terperinci Kenapa `ProcessStartInfo.waitForExit ()` Hang dengan StandardOutput yang besar, dan bagaimana saya boleh memperbaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!