У меня есть программа на C #, которая запускает TShark.exe, который является фоновым эквивалентом WireShark.Я хотел бы закрыть все экземпляры, которые я запускаю.Похоже, он просто отлично запускается, работает в фоновом режиме и регистрирует сетевой трафик в файл, как и должен.Однако, когда я пытаюсь закрыть его, я получаю исключение "No process is associated with this object."
.
Вот как я запускаю процессы:
ProcessStartInfo processStartInfo = new ProcessStartInfo
{
Arguments = $"-i {nic} -t ad -w {GenerateLogPath(nic)}",
FileName = "\"C:\\Program Files\\Wireshark\\tshark.exe\"",
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false
};
WireSharkProcesses.Add(System.Diagnostics.Process.Start(processStartInfo));
Я пытался закрыть несколько методов/ убить эти процессы.Во-первых, я сохранил список всех процессов, которые я запустил в своем приложении, и безуспешно вызвал для них следующее:
process.CloseWindow();
process.Close();
process.Kill();
Я продолжал получать исключение "No process is associated with this object."
.
ИтакЯ использовал:
var processes = System.Diagnostics.Process.GetProcesses();
И получил список всех процессов на моей машине, перебрал их и попытался закрыть тех, чье имя процесса было «tshark» или «dumpcap».Я попытался сделать это с помощью .CloseWindow (), .Close () и .Kill (), которые все потерпели неудачу и выдавали вышеупомянутое исключение.
Я даже вошел в TaskManager и попытался завершить ЗАДАНИЕ на них.Они, казалось, были удалены, но после закрытия и повторного открытия TaskManager, они волшебным образом появились снова.Также теперь есть несколько экземпляров tshark и dumpcap, которые появляются, когда я вызываю GetProcesses (), но отсутствуют в списке процессов, отображаемых диспетчером задач.
Чего мне здесь не хватает ??Если не считать перезагрузки компьютера, как мне заставить эти процессы завершиться?Это просто проблема проволочной акулы или общая проблема с процессами убийства?