public static string CallEchoString2(string arg) { IntPtr gs = PythonEngine.AcquireLock(); try { if (module == null) { module = PythonEngine.ModuleFromString("tt", testmod); } PyObject func = module.GetAttr("echostring2"); var parg = new PyString(arg); PyObject temp = func.Invoke(parg); var result = (string)temp.AsManagedObject(typeof(string)); func.Dispose(); parg.Dispose(); temp.Dispose(); return(result); } finally { PythonEngine.ReleaseLock(gs); } }
/// <summary> /// This method calls back into the CPython runtime - tests /// call this from Python to check that we don't hang on /// nested transitions from managed to Python code and back. /// </summary> public static string CallEchoString(string arg) { using (Py.GIL()) { if (module == null) { module = PyModule.FromString("tt", testmod); } PyObject func = module.GetAttr("echostring"); var parg = new PyString(arg); PyObject temp = func.Invoke(parg); var result = (string)temp.AsManagedObject(typeof(string)); func.Dispose(); parg.Dispose(); temp.Dispose(); return(result); } }