Chr*_*ips 19 .net c# kill process
使用C#4.0,我创建了一个System.Diagnostics.Process我希望花费很少时间来运行的东西.如果由于某种原因,该过程在一段时间后没有退出(例如,我已经调用.WaitForExit(timeout)并且返回值是false),我需要清理.我已经决定.Kill()在这种特殊情况下使用是安全的(没有数据结构我担心会破坏).
鉴于此设置,我是否还需要调用.Close()Process 的方法?如果是这样,我应该.Close()在之前还是之后打电话.Kill()?
Ste*_*idi 13
System.Diagnostics.ProcessIDisposable通过Component类实现,受保护的Dispose(bool)方法调用Close().在完成这些资源时,通常认为处理一次性资源是一种好习惯,因为这将立即释放与该类相关的任何资源(无需等待GC运行).
所以回答你的问题:
是的,请Close()通过Dispose()直接调用方法或通过C#using构造调用,如下所示.
using(Process proc = CreateProcess())
{
StartProcess(proc);
if (!proc.WaitForExit(timeout))
{
proc.Kill();
}
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*ock 12
Process.Kill()并Process.Close()在内部调用Close()与进程关联的私有SafeProcessHandle对象.但是,Process.Close()也明确重置了其他几个内部成员.
由于Process实现IDisposable,你应该Close()在完成后调用它,或者将它包装在一个using块中.
| 归档时间: |
|
| 查看次数: |
7920 次 |
| 最近记录: |