首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 啟動外部程序的三種核心模式與實戰技巧

     編輯:關於C語言

Process 類別:跨進程操作的核心

System.Diagnostics.Process 類別提供啟動、監控、控制外部程序的完整功能。根據業務需求,主要有三種常用模式:

模式一:啟動並忘記

適用於獨立運行的工具、批次檔、文件開啟等場景:

Process.Start(@"C:\scripts\listfiles.bat");

主程式繼續執行,不等待子進程結束。

模式二:同步執行並捕獲輸出

需等待子進程結束、讀取標準輸出、處理逾時:

var psi = new ProcessStartInfo(@"C:\scripts\listfiles.bat")
{
    RedirectStandardOutput = true,
    UseShellExecute = false,           // 必須為 false 才能重導向
    CreateNoWindow = true,             // 隱藏視窗
};

var process = Process.Start(psi);
string output = process.StandardOutput.ReadToEnd();

bool exited = process.WaitForExit(2000); // 2 秒逾時
if (!exited)
{
    process.Kill();                    // 強制終止
    throw new TimeoutException("子進程執行逾時");
}

Console.WriteLine(output);

關鍵點:UseShellExecute = false 是重導向輸入/輸出/錯誤流的前提;WaitForExit 避免無限阻塞。

模式三:啟動預設瀏覽器開啟 URL

Process.Start("https://www.example.com");

利用 Shell Execute 機制,系統會自動呼叫預設瀏覽器處理 HTTP/HTTPS 協定。

進階提示

  • 傳遞參數:ProcessStartInfo.Arguments 設定命令列參數
  • 工作目錄:WorkingDirectory 指定子進程的當前目錄
  • 權限提升:Verb = "runas" 以系統管理員權限啟動
  • 非同步事件:訂閱 OutputDataReceived、ErrorDataReceived 並呼叫 BeginOutputReadLine() 實現即時流式讀取
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved