C#运行后停止进程

时间:2019-09-10 09:10:49

标签: c# process

我有一个问题,我想用7za.exe解压缩一个zip文件,然后我想终止该过程。如果我使用下面的代码,则会遇到在进程解压缩文件之前该进程被杀死的问题。

我已经尝试使用HasExited或WaitForExit,但是没有机会。有人知道吗?唯一的工作方法是使用Thread.Sleep(1000)函数,因为它会使某些其他进程变慢,所以我无法使用它。

System.Diagnostics.ProcessStartInfo zipper = new System.Diagnostics.ProcessStartInfo(@"##archzip.text##");
            zipper.Arguments = string.Format("x " + (PathOfFile) + "  -o" + (NewPathOfFile) + "");
            zipper.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            System.Diagnostics.Process proc = System.Diagnostics.Process.Start(zipper);
            proc.Kill();

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试下面的代码

using System.IO.Compression;

public static void Decompress(FileInfo fileToDecompress)
{
    using (FileStream originalFileStream = fileToDecompress.OpenRead())
    {
        string currentFileName = fileToDecompress.FullName;
        string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

        using (FileStream decompressedFileStream = File.Create(newFileName))
        {
            using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
            {
                decompressionStream.CopyTo(decompressedFileStream);
                Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
            }
        }
        }
}

如果要解压缩文件夹,可以使用下面的命令行:

ZipFile.ExtractToDirectory(@"C:\temp\file\9906759_Testpraefix_14028604.zip", @"C:\temp\file\extract\9906759_Testpraefix_14028604");