当我开始一个流程并希望关闭这个流程时,Process.Close()和之间有什么区别Process.Kill()?
我问,因为我有一个应用程序,它开始使用Wireshark通过命令行使用命令来捕获数据包Windows = hidden.因此,当我想停止捕获时,我会终止进程.因此有时捕获会打开,并显示错误,即最后一个数据包在中间被切断,所以我想知道可以使用close()之前kill()会解决这个问题吗?
当我开始捕捉时,我可以通过按Ctrl + C关闭它,但在我的情况下,我打开隐藏状态的窗口,我可以通过我的代码做类似的事情吗?
Cod*_*ter 65
Process.Close()和之间有什么区别process.Kill()?
手册非常清楚:
Close方法会导致进程在等待时停止等待退出,关闭进程句柄并清除特定于进程的属性.关闭不会关闭标准输出,输入和错误读取器和写入器,以防它们被外部引用.[即进程本身一直在运行,你只是无法使用你的
Process实例控制它]
Kill强制终止进程,而CloseMainWindow仅请求终止.[...]通过调用CloseMainWindow退出进程的请求不会强制应用程序退出.应用程序可以在退出前请求用户验证,也可以拒绝退出.要强制退出应用程序,请使用Kill方法.CloseMainWindow的行为与使用系统菜单关闭应用程序主窗口的用户的行为相同.因此,通过关闭主窗口退出进程的请求不会强制应用程序立即退出.
通过向主窗口发送关闭消息来关闭具有用户界面的进程.
至于你的编辑:
我问,因为我有应用程序谁开始使用wireshark捕获数据包与命令通过命令行与Windows =隐藏.
使用WinPcap API或Pcap.Net库,而不是Wireshark.
Dav*_*fer 15
Kill要求系统毫不客气地终止进程(通过调用Windows TerminateProcess系统调用).这类似于任务管理器中的结束进程.
Close在.NET中关闭进程的句柄,但实际上并没有触及进程本身.Close也被称为Dispose.请参阅Jon Skeet的回答.
第三种选择是CloseMainWindow,这不正常通过询问主窗口关闭关闭程序.这类似于右键单击任务栏上的程序并选择"关闭".
杀戮和关闭不是两个选择.如果要终止进程,必须调用Kill(或CloseMainWindow).Calling Close只会释放资源,但不会关闭标准流.自己关闭流可能会也可能不会导致流程结束,这取决于流程.最好的策略是根据进程的类型调用Kill或CloseMainWindow,然后调用Process对象.
关闭开始关闭Process对象.它由Dispose调用.Close通常用于管理Process对象的资源.
杀死会终止这个过程.这是终止没有用户界面的进程的唯一方法.
CloseMainWindow向进程的主窗口发送关闭消息.这是停止具有用户界面的进程的优雅方式.
| 归档时间: |
|
| 查看次数: |
54365 次 |
| 最近记录: |