我试图创建一个backgroundworker,它创建一个进程,使一些ovf命令。在此期间,我尝试通过发送cnt +c来中止操作。这个网站上也有类似的问题,但没有一个能解决这个问题。
private void DeployOVF()
{
p = new Process();
ProcessStartInfo pi = new ProcessStartInfo("ovftool.exe", "--machineOutput "+ FileName + " vi://uname:pwd@Ip Address");
pi.UseShellExecute = false;
pi.RedirectStandardOutput = true;
pi.RedirectStandardInput = true;
pi.RedirectStandardError = true;
pi.CreateNoWindow = true;
p.StartInfo = pi;
p.Start();
StreamReader myStreamReader = p.StandardOutput;
string myString;
bool progressStarted = false;
while ((myString = myStreamReader.ReadLine()) != null)
{
//Logic to display the progress
}
p.WaitForExit();
p.Close();
}
这里是我发送我的c +c来中止进程的地方,
private void button1_Click(object sender, EventArgs e)
{
p.StandardInput.Write("\x3");
p.StandardInput.Close();
}
2条答案
按热度按时间b5lpy0ml1#
如果进程正在响应(即,它的前台线程正在响应信号),那么你应该使用:用途:
如果没有,你应该可以用
Kill
中止这个过程(不干净):5rgfhyps2#
我不知道这会有多大帮助,因为我不熟悉
ofv
,但也许可以试试MedallionShell。它具有多平台实现,支持将Ctrl + C
信号发送到应用程序。我试图使用一个ASP.NET Core应用程序向另一个ASP.NET Core应用程序发送
Ctrl + C
信号,MedallionShell
工作得很好!