Мое приложение размещает PowerShell и добавляет ссылки на COM-объекты через RunSpace.SessionStateProxy.SetVariable()
.После добавления переменных и вызова Invoke для некоторого кода PowerShell COM-объекты не освобождаются должным образом.Как заставить все ссылки COM (включая ссылки на временные ссылки, возвращаемые путем вызова объектной модели COM) быть освобожденными PowerShell и средой выполнения .NET?Я пытался вызвать
object o = rs.SessionStateProxy.GetVariable(name);
if (o != null)
{
rs.SessionStateProxy.SetVariable(name, null);
Marshal.ReleaseComObject(o);
}
для всех переменных, а также PipeLine.Dispose()
, Runspace.Close()
и GC.Collect()
, но это не помогло.