public PySharp(bool createFrame) : this() { if (!createFrame) { return; } // Create dummy code (needed for the new frame) _dummyCode = new PyObject(this, Py.PyCode_NewEmpty("", "", 1), true); // Create a new frame _frame = new PyObject(this, Py.PyFrame_New(Py.GetThreadState(), _dummyCode, Import("__main__").Attribute("__dict__"), Import("__main__").Attribute("__dict__")), true); // Exchange frames _oldFrame = new PyObject(this, Py.ExchangePyFrame(_frame), false); }
/// <summary> /// Dispose of all PyReferences /// </summary> public void Dispose() { // Release the frame created for PySharp if (_frame != PyZero) { // Return the old frame Py.ExchangePyFrame(_oldFrame); _frame = PyZero; } // Remove any of the references we caused foreach (var pyObject in _pyReferences) { pyObject.Release(); } // Clear any python errors we might have caused Py.PyErr_Clear(); }