C # Только часть запроса ReadProcessMemory или WriteProcessMemory была выполнена во время Process.Kill ()
Я исследовал эту проблему довольно широко и, похоже, не могу найти ответ.
Я знаю чтоOnly part of a ReadProcessMemory or WriteProcessMemory request was completed
Исключение выдается, когда 32-разрядный процесс пытается получить доступ к 64-разрядному процессу и то же самое для 64-разрядного изменения 32-разрядного процесса.
Решение этой проблемы состоит в том, чтобы изменить цель платформы на «Любой ЦП». Я пробовал это, и, к сожалению, это не решает мою проблему.
Следующий блок кода - это то, что продолжает вызывать исключение. Программа, которая запускает этот код, используется для открытия приложений на удаленных компьютерах и хранит список всех процессов, которые сама программа открыла, так что мне не нужно перебирать все процессы.
Process processToRemove = null;
lock (_runningProcesses)
{
foreach (Process p in _runningProcesses)
{
foreach (ProcessModule module in p.Modules)
{
string[] strs = text.Split('\\');
if (module.ModuleName.Equals(strs[strs.Length - 1]))
{
processToRemove = p;
break;
}
}
if (processToRemove != null)
{
break;
}
}
if (processToRemove != null)
{
processToRemove.Kill();
_runningProcesses.Remove(processToRemove);
}
}
Эти процессы могут и, скорее всего, будут 32-битными и 64-битными, смешанными вместе.
Есть ли что-то, что я делаю, что я не должен делать, или есть просто лучший способ сделать все это?