OGeek|极客世界-中国程序员成长平台

标题: c# - What are the differences between kill process and close process? [打印本页]

作者: 菜鸟教程小白    时间: 2022-5-24 13:56
标题: c# - What are the differences between kill process and close process?

When I start a process and want to close this process, what are the differences between Process.Close() and Process.Kill()?

I asked because I have an application which starts to capture packet using Wireshark with a command via command line with Windows = hidden. so when I want to stop the capturing I kill the process .So sometimes the capture opens with an error that the last packet was cut in the middle so I am wondering can using close() before kill() will solve this issue ?

When I start capturing I can close it by pressing Ctrl + C but in my case I open the window in hidden state, Can I do something similar via my code ?



Best Answer-推荐答案


What are the differences between Process.Close() and process.Kill()?

The manual is pretty clear on that:

Process.Close():

The Close method causes the process to stop waiting for exit if it was waiting, closes the process handle, and clears process-specific properties. Close does not close the standard output, input, and error readers and writers in case they are being referenced externally. [i.e. the process itself keeps running, you just cannot control it anymore using your Process instance]

Process.Kill():

Kill forces a termination of the process, while CloseMainWindow only requests a termination. [...] The request to exit the process by calling CloseMainWindow does not force the application to quit. The application can ask for user verification before quitting, or it can refuse to quit. To force the application to quit, use the Kill method. The behavior of CloseMainWindow is identical to that of a user closing an application's main window using the system menu. Therefore, the request to exit the process by closing the main window does not force the application to quit immediately.

Process.CloseMainWindow:

Closes a process that has a user interface by sending a close message to its main window.


As for your edit:

i asked because i have application who start to capture packet using wireshark with command via command line with Windows = hidden.

Use the WinPcap API or the Pcap.Net library for that, not Wireshark.






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) Powered by Discuz! X3.4