创建流程后如何处理流程
本文关键字:处理 创建 何处理 | 更新日期: 2023-09-27 18:26:27
引用"如何在chrome隐身模式下打开URL"问题的答案:
我写了这个,它很成功:
Process.Start(@"chrome.exe", "--incognito http://domain.com");
有人回复说:
您需要处理对象,否则会发生内存泄漏
我通常使用Process.Start
创建许多进程,但从不"处理"它们。这是什么?我该怎么做?
根据MSDN上的Component文章,这是正确的。您应该在使用后释放Process
对象,释放任何非托管资源(应用程序不会关闭)。
组件应通过调用其Dispose方法显式释放资源,而无需通过隐式调用Finalize方法等待自动内存管理。当容器被处置时,容器中的所有组件也被处置。
来自Process
的文章:
此类型实现IDisposable接口。使用完该类型后,应直接或间接处理它。若要直接处置该类型,请在try/catch块中调用其dispose方法。若要间接处理它,请使用诸如using(在C#中)或using(在Visual Basic中)之类的语言构造。有关更多信息,请参阅IDisposable接口主题中的"使用实现IDisposaable的对象"部分。
Process
来源于Component
,所以你应该处理它。它很简单:
Process myProc = Process.Start(@"chrome.exe", "--incognito http://domain.com");
myProc.Dispose();
甚至更容易
using (Process myProc = Process.Start(@"chrome.exe", "--incognito http://domain.com"))
{
//Do whatever with the process
}
当块退出时,using块将处理对象。
使用Process.Close();
var Pro = new Process();
Pro.Start(@"chrome.exe", "--incognito http://domain.com");
Pro.WaitForExit(); //optional
Pro.Close();