Я использую ac # winform, которая открывает командный файл.Я хочу, чтобы пользователь мог нажать на кнопку «Стоп» в winform и убить эту задачу.Проблема в том, что winform зависает до тех пор, пока запуск пакетного файла не будет полностью завершен.Поэтому я использовал фонового работника (который позволил мне открыть новый поток, который не беспокоит функциональность winform):
private void bgw_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
string fileName = (string)e.Argument;
ExecuteTest(fileName);
}
и заметил, что я добираюсь до «отладки!»сообщение, но командный процесс не умирает:
private void tsbStopRun_Click(object sender, EventArgs e)
{
Process prc1 = GetProcess("cmd");
KillProcess(prc1);
}
private Process GetProcess(string processName)
{
Process[] Prc = Process.GetProcessesByName(processName);
if (Prc.Length > 0)
return Prc[0];
else
return null;
}
private void KillProcess(Process prc)
{
if (prc != null)
{
prc.Kill();
MessageBox.Show("debug!");
}
}
Кстати, если я открою командную задачу и нажму на кнопку остановки, командная задача будет уничтожена ...
Как можноЯ убиваю командную задачу фонового работника с помощью кнопки остановки ... ??