2

假设我启动了一个进程来运行像 7z.exe (7-Zip Archiver) 这样的控制台应用程序。我正在创建没有窗口的进程,并且正在重定向标准输出。

我想知道如何停止“Process.Kill”以外的进程,因为这会导致留下不完整/损坏的存档文件。

如果我在从普通命令控制台窗口运行 7z.exe 时按 CTRL-BREAK,它会正常关闭并删除不完整的文件。

如果 cmd.exe 可以启动一个进程并向其发送 ctrl-break 信号,那么我自己的应用程序如何启动一个进程并向其发送 ctrl-break(或等效)信号,以便该进程正常关闭?

4

1 回答 1

0

如果需要,你可以做一个 thread.sleep 来暂停它。如果你想完全停止它,我会设置一个监视变量,然后暂停你的线程,处理任何现有数据(这可能是 7zip 正在做的),然后执行 process.kill。我认为没有(或不知道)一种方法可以“优雅地”自动处理中止进程。程序员可以优雅地处理中断的退出条件,这取决于您。

于 2013-04-19T20:09:28.437 回答