gpt4 book ai didi

c# - 我怎样才能杀死两个进程?

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:02 28 4
gpt4 key购买 nike

我的 Form1 按钮点击事件中有这一行:

Process.Start(Path.GetFullPath(zippedFileDirectory));

它只是打开这个目录的位置。然后我有另一行:

Process.Start(Path.GetFullPath(temp));

如果我点击第一个按钮,然后点击第二个按钮,我将在每个进程中打开两个窗口。

现在我正在关闭我的程序,所以在 Form1 关闭事件中我想终止这两个进程。

在其他部分我要做什么?

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you Sure you want to Exit. Click Yes to Confirm and No to continue", "WinForm",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{

}
}

编辑:

我现在在我的 Form1 顶部添加了:

private Process zipFileDirectoryProcess;

然后在我做的方法的底部:

private void Compress()
{
string zipFileName = "Diagnosis_Files.zip";
string source = contentDirectory;
string output = zippedFileDirectory;
string programFilesX86 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86)
+ "\\Diagnostic Tool\\7z.dll";
if (File.Exists(programFilesX86))
{
SevenZipExtractor.SetLibraryPath(programFilesX86);
}
string programFiles = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)
+ "\\Diagnostic Tool\\7z.dll";
if (File.Exists(programFiles))
{
SevenZipExtractor.SetLibraryPath(programFiles);
}
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.ArchiveFormat = OutArchiveFormat.Zip;
compressor.CompressionMode = CompressionMode.Create;
compressor.TempFolderPath = System.IO.Path.GetTempPath();
string t = Path.Combine(output, zipFileName);
compressor.CompressDirectory(source, t);
zipFileDirectoryProcess.Start(Path.GetFullPath(zippedFileDirectory));
this.TopMost = true;
}

我添加了一行:

zipFileDirectoryProcess.Start(Path.GetFullPath(zippedFileDirectory));

但是我在这一行遇到错误:

Error 1 Member 'System.Diagnostics.Process.Start(string)' cannot be accessed with an instance reference; qualify it with a type name instead

在我添加这一行之前我有这一行:

Process.Start(Path.GetFullPath(zippedFileDirectory));

它运行良好,为什么现在出现此错误?

最佳答案

Process p1 = Process.Start(Path.GetFullPath(zippedFileDirectory));
Process p2 = Process.Start(Path.GetFullPath(temp));
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you Sure you want to Exit. Click Yes to Confirm and No to continue", "WinForm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{
p1.Kill();
p2.Kill();
}
}

更新

对于您添加的问题,您不能在 Process 的实例上调用 Start() 方法,因为:

  1. 没有Start() 的覆盖方法(实例方法)采用string 的1 个参数。只有 1 个方法没有任何参数 Start()
  2. IDE 说你应该在类型名称上调用 Start(),这意味着你应该调用 Process.Start(string ....) Process 是一个类型名。此 Start(string...) 是一个静态方法,只能在类型名称上调用。

关于c# - 我怎样才能杀死两个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040802/

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