簡體   English   中英

在命令提示符運行時使用Windows窗體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM