gpt4 book ai didi

.net - 不调用 Process.Close() 是否存在重大问题?

转载 作者:行者123 更新时间:2023-12-03 07:49:37 24 4
gpt4 key购买 nike

System.Diagnostics.Process 类是否需要 Close() 方法?

编辑:进程正在监视一个控制台应用程序,该应用程序几乎立即终止...

比利3

最佳答案

但请注意,Close 仅与释放应用程序本地资源有关。它不会尝试终止该进程。为此,您必须调用 CloseMainWindow()(对于 GUI 应用程序)或 Kill()(对于任何应用程序)。

Process 类实现了 IDisposable,严格来说,它要求您在完成对象后调用 Dispose。但是,对于许多这样的类,Dispose 方法的面向公众的版本是 Close

处理此类对象的最简单(也是最可靠)的方法是使用 using block 。一旦到达 block 的末尾,就会自动对变量调用Dispose。它还可以保护您免受异常情况的影响,从而阻止您处置该对象。

例如:

using(System.Diagnostics.Process process = new System.Diagnostics.Process())
{
// set your properties and launch it
// wait for it to exit if you want to, or just let it continue to run
}

这在功能上等同于这样做:

System.Diagnostics.Process process = new System.Diagnostics.Process();

try
{
// set your properties and launch it
// wait for it to exit if you want to, or just let it continue to run
}
finally
{
process.Close();
}

(请注意,我说的是功能上等效,而不是语义上等效;实际上,using block 将其自己的对象句柄作为 IDisposable 维护,然后调用 Dispose,而不是Close。但是,这与这个问题无关。)

关于.net - 不调用 Process.Close() 是否存在重大问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com