internal ChildMeasure(API api) { rmAPI = api; proxy = new APIProxy(api); string parentName = api.ReadString("Parent", "").ToLowerInvariant(); IntPtr skin = api.GetSkin(); parent = null; // Find parent using measure name AND the skin pointer to be sure that it's the right one. foreach (ParentMeasure parentMeasure in ParentMeasure.ParentMeasures) { if (parentMeasure.skin.Equals(skin) && parentMeasure.measureName.Equals(parentName)) { parent = parentMeasure; break; } } if (parent == null) { api.Log(API.LogType.Error, "PowershellRM.dll: Parent=" + parentName + " not valid"); return; } runspace = parent.runspace; }
public static void Initialize(ref IntPtr data, IntPtr rm) { API api = new API(rm); Measure measure; int async = api.ReadInt("Async", 0); if (async == 1) { measure = new AsyncMeasure(api); } else { string parent = api.ReadString("Parent", null); if (string.IsNullOrEmpty(parent)) { measure = new ParentMeasure(api); } else { measure = new ChildMeasure(api); } } data = GCHandle.ToIntPtr(GCHandle.Alloc(measure)); }