[英]Use windows form whilst command prompt is running
我正在研究的是一個在命令提示符下運行命令並將結果輸出到表單的程序。 但是,無論何時啟動命令,它都會鎖定Windows窗體,然后您將無法再單擊該窗體上的任何內容。 這是一個問題,因為我想添加一個停止按鈕,請參見下面的相應代碼。
private void Start_Click(object sender, EventArgs e)
{
var proc = new Process();
proc.StartInfo.Arguments = "/C robocopy " + "\"" + source.Text + "\" \"" + Destination.Text + "\" /E /ZB /W:1 /R:3 /MT /A-:SH";
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.EnableRaisingEvents = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
// see below for output handler
proc.ErrorDataReceived += proc_DataReceived;
proc.OutputDataReceived += proc_DataReceived;
proc.Start();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
proc.WaitForExit();
}
刪除對proc.WaitForExit();
的調用proc.WaitForExit();
因為這會阻止執行。 有關WaitForExit
請參見[docs]( https://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.waitforexit ( v= WaitForExit
) WaitForExit
:
設置等待關聯的進程退出的時間,並阻止當前執行線程,直到該時間過去或進程退出為止。 為避免阻塞當前線程,請使用Exited事件。
如前所述,如果要在進程退出后運行代碼,請使用Exited
事件。 由於您的代碼不執行此操作,因此您可以跳過此步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.