什么场合下必须调用Dispose方法

在使用System.Diagnostics.Process对象时,如果在代码中多次启动并运行进程,则每次该对象启动进程是都会创建新的进程对象。每个进程对象都需要消耗系统资源,即使他们已经被关闭或终止。如果我们不释放这些资源,当导致系统资源耗尽,进程泄漏,最终导致程序崩溃。

因此,在使用System.Diagnostics.Process对象时,我们应该显示地调用Dispose方法释放该对象占用的系统资源。这个方法执行结束后,调用了该对象的所有系统资源都将被释放。此外,最佳做法是使用using语句块,该语句块将自动为我们调用Dispose方法并释放资源。


调用Kill方法之后是否还需要调用Dispose方法

使用System.Diagnostics.Process的kill方法可以杀死进程,但是该方法不会自动释放所有与该进程相关联的系统资源。如果我们不是放这些资源,就可能导致系统出现资源泄漏问题。

因此,在调用kill方法后,我们应该显示地调用Dispose方法

Process myprocess = new Process();
try
{
	// do something
}
finally
{
	myprocess.Kill();
  myprocess.Dispose();
}

或者我们使用using语句块可以让编译器在离开using代码块时自动调用Disponse方法

using(Process myprocess = new Process())
{
	// do something
	myprocess.Kill();
}