private static void MTAThread(object obj) { MTAParameters p = obj as MTAParameters; if (p != null) { p.result = Run(p.args, p.engine); } }
static int Main(string[] rawArgs) { ArrayList args = new ArrayList(); //??? new List<string>(args); foreach (string arg in rawArgs) { args.Add(arg); } Options options = ParseOptions(args); if (Options.PrintVersionAndExit) { Console.WriteLine(PythonEngine.VersionString); return(0); } PythonEngine engine = new PythonEngine(options); try { if (TabCompletion) { UseSuperConsole(engine); } else { engine.MyConsole = new BasicConsole(); } if (Options.WarningFilters != null) { engine.Sys.warnoptions = IronPython.Runtime.List.Make(Options.WarningFilters); } engine.Sys.SetRecursionLimit(Options.MaximumRecursion); if (mta) { MTAParameters p = new MTAParameters(engine, args); System.Threading.Thread thread = new System.Threading.Thread(MTAThread); thread.SetApartmentState(System.Threading.ApartmentState.MTA); thread.Start(p); thread.Join(); return(p.result); } else { return(Run(args, engine)); } } finally { engine.Shutdown(); } }