如何停止较长且不会循环的C#进程

问题描述

在特定情况下,我有一个调用OS命令的进程,需要停止或终止它。举例来说,这是一个连续的过程。该进程例如执行“ myapplication.exe”。我不应该使用后台工作程序,而只是将其包装在线程中。然后杀死线程?我还考虑过发送CTRL + C来取消,但不确定如何将其注入到处理命令中。正确的道路是什么?

private void btnExecuteResponseCmd_Click(object sender,EventArgs e)
{
     backgroundWorker1.RunWorkerAsync();
     //https://stackoverflow.com/questions/4732737/how-to-stop-backgroundworker-correctly
     //works if it is looping and can read the cancel variable but not in this case
 } 

private void backgroundWorker1_DoWork(object sender,DoWorkEventArgs e)
{
    ProcessStartInfo pStartInfo = new ProcessStartInfo("myapplication.exe");
    //https://social.msdn.microsoft.com/Forums/en-US/5880a108-4169-44a5-81f2-6a745438d486/redirecting-command-window-messages-to-rich-text-box
    pStartInfo.CreateNoWindow = true;
    pStartInfo.UseShellExecute = false;
    pStartInfo.RedirectStandardInput = true;
    pStartInfo.RedirectStandardOutput = true;
    pStartInfo.RedirectStandardError = true;
    process1.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
    process1.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
    process1.StartInfo = pStartInfo;
    process1.SynchronizingObject = rbResponse;
    process1.Start();
    process1.BeginOutputReadLine();
    process1.WaitForExit();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)