给定下面的代码,这是对另一个问题的接受答案。
用这种方式运行新进程安全吗?还是我应该管理对MyProcess的引用?
我的理解是GC将(最终)处理不再具有引用的对象。随着MyProcess超出范围,当这个引用最终被垃圾回收时,Dispose()方法会被调用,这是我的理解。我的印象是它可能会运行一段时间,直到GC进行收集。
我的理解是GC将(最终)处理不再具有引用的对象。随着MyProcess超出范围,当这个引用最终被垃圾回收时,Dispose()方法会被调用,这是我的理解。我的印象是它可能会运行一段时间,直到GC进行收集。
void TestMethod()
{
Process MyProcess = new Process();
MyProcess.StartInfo = new ProcessStartInfo("app.exe");
MyProcess.StartInfo.WorkingDirectory = "";
MyProcess.StartInfo.Arguments = "some arguments";
MyProcess.Start();
}
Process
实例可能超出范围,但那不是进程本身——它只是进程的描述符,让您获取有关特定进程的信息。 - xxbbccDispose
会处理与内存中的Process
实例相关联的资源,而不是该实例所描述的进程本身。 - xxbbccProcess
实例独立于进程存在 - 在进程启动之前就创建了它。一旦它启动,它就存在于一个单独的内存空间中。只要实例在作用域内,它就有能力获取有关进程的更新信息 - 之后它会被清理,但这不会影响进程。 - xxbbcc