예제 #1
0
        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);
            }
        }
예제 #2
0
 /// <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);
     }
 }