23
|
Brann · 技术社区 · 16 年前 |
![]() |
1
12
终止进程意味着最终将不会执行块,甚至可能不会 critical finalizer objects ,这实际上可能非常关键,并在系统级别导致资源泄漏。当其他人维护代码时,它也可能在将来导致意外的错误,因为他们(或您)将不得不绞尽脑汁,每次编写finally块时都必须考虑是否将执行它。 |
![]() |
2
4
这确实是个好问题! 有一次(十多年前),我写了一个vb6应用程序,由于wininet ocx中的一个已确认的错误(或它被调用的任何东西)而在终止时挂起,原因是它正在与一个web服务器上使用的特定证书。 我使用了TerminateProcess,据我所知,这个应用程序已经在几千台机器上使用了好几年了,我从来没有听说过关于这个黑客的任何问题! |
![]() |
3
4
首先,我想你是说
|
![]() |
4
1
请记住,如果您正在写入文件/网络流,则可能会导致写入不完整。 如果应用程序已准备好以这种方式处理损坏的数据,则没有理由不这样做。不过,如果你可以退出其他方式,我会建议。 |
![]() |
5
1
应该指出的是 finalizers may actually be never executed ,因此终止进程与跳过终结代码的任何其他原因(如慢速终结器或引发异常的终结器)没有太大区别。
总之,我不太担心关闭应用程序需要几秒钟,特别是如果它立即隐藏所有窗口并为用户“消失”的话。但是,如果关闭需要几十秒和/或用户可能再次执行应用程序,并且它不支持多个实例,则调用
我知道有些申请需要 年龄 要终止,我希望有一天他们会残忍地自杀,而不是让我,用户,去做(这在操作系统重启时特别烦人)。 |
![]() |
6
1
使用第三方库时无法捕获错误或泄漏,有时在不抛出崩溃消息框的情况下结束错误或泄漏的唯一方法是终止进程。 |
![]() |
7
0
为什么不使用 System.Environment.Exit(int) 是吗?看起来你这样做只是为了保存代码。对我来说,更清楚地看到退出的调用,并且您的关机将更加受控,终结器和临界终结器将运行。 |