Tôi đang sử dụng VBOXMANAGE để "xuất" máy khách. VBOXManage là một ứng dụng Console có thể điều khiển hành vi của máy khách từ máy chủ. Kể từ khi lệnh xuất khẩu là một quá trình lâu dài, nó sẽ trả về thông tin cập nhật quá trình như vậy:Chuyển hướng đầu ra của Bảng điều khiển thời gian thực bằng quy trình
0% ... 10% ... 20% ... 30% ... 100%
Tôi viết một Ứng dụng C# sẽ gọi VBOXManage bằng Process. Đây là mã của tôi:
Process VBOXProc = new Process();
VBOXProc.StartInfo.FileName = VBOXMANAGE;
VBOXProc.StartInfo.Arguments = Arguments;
VBOXProc.StartInfo.UseShellExecute = false;
VBOXProc.StartInfo.CreateNoWindow = true;
VBOXProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
VBOXProc.StartInfo.RedirectStandardError = true;
VBOXProc.StartInfo.RedirectStandardOutput = true;
VBOXProc.OutputDataReceived += new DataReceivedEventHandler(VBOXProc_OutputDataReceived);
VBOXProc.ErrorDataReceived += new DataReceivedEventHandler(VBOXProc_ErrorDataReceived);
VBOXProc.EnableRaisingEvents = true;
VBOXProc.Start();
VBOXProc.BeginOutputReadLine();
VBOXProc.BeginErrorReadLine();
VBOXProc.WaitForExit();
Điều này là tốt, ngoại trừ đầu ra được đọc trên mỗi LINE. Điều này có nghĩa là quá trình cập nhật " 0% ... 10% ... 20% ... 30% ... 100%" sẽ chỉ hiển thị SAU KHI quá trình thực tế được thực hiện.
Có cách nào để nắm bắt đầu ra của bàn điều khiển trong thời gian thực không?
Cảm ơn!
Lưu ý tên hàm: BeginOutput * ReadLine * –
Có, cảm ơn bạn nobugz vì cái nhìn sâu sắc tuyệt vời đó. ;) – Ian
Một vài câu lệnh 'With' sẽ làm cho mã đó dễ dàng hơn nhiều trên mắt (và clipboard) ...' Với VBOXProc ... Với .StartInfo ... Kết thúc bằng ... Kết thúc bằng'. – Basic