阅读量:0
在C#中,创建子进程通常是通过使用System.Diagnostics.Process
类来实现的
using System; using System.Diagnostics; class Program { static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo("notepad.exe") { RedirectStandardOutput = true, UseShellExecute = false }; Process process = new Process(); process.StartInfo = startInfo; process.Start(); // 等待子进程退出 process.WaitForExit(); // 获取子进程的资源占用情况 TimeSpan totalProcessorTime = process.TotalProcessorTime; long peakWorkingSet64 = process.PeakWorkingSet64; long peakVirtualMemorySize64 = process.PeakVirtualMemorySize64; Console.WriteLine($"Total Processor Time: {totalProcessorTime}"); Console.WriteLine($"Peak Working Set: {peakWorkingSet64 / 1024} KB"); Console.WriteLine($"Peak Virtual Memory Size: {peakVirtualMemorySize64 / 1024} KB"); process.Close(); } }
在这个示例中,我们创建了一个新的Process
对象,并使用ProcessStartInfo
类来指定要运行的应用程序(在本例中为Notepad)。然后,我们设置RedirectStandardOutput
属性以捕获子进程的输出,并将UseShellExecute
属性设置为false
以启用重定向。
接下来,我们调用process.Start()
方法来启动子进程,并使用process.WaitForExit()
方法等待子进程退出。一旦子进程退出,我们就可以使用TotalProcessorTime
、PeakWorkingSet64
和PeakVirtualMemorySize64
属性来获取子进程的资源占用情况。
请注意,这些属性只能在子进程退出之后才能访问。如果你需要在子进程运行期间实时监控其资源占用情况,可以考虑使用PerformanceCounter
类或其他性能监视工具。