2014-03-26 51 views
0

假設我們有IronPython中下面的代碼:從C#調用IronPython的功能IronPython的運行時間進行處理後

def hello(): 
    print "Hello from Python" 

我們稱之爲功能hello()在下面的C#代碼:

private static void GetPythonFunction() 
    { 
     ScriptRuntime scriptRuntime = IronPython.Hosting.Python.CreateRuntime(); 
     ScriptScope scope = scriptRuntime.ExecuteFile(@"Python\helloFunc.py"); 
     Action hello = scope.GetVariable<Action>("hello"); 
     hello(); 
     scriptRuntime.Shutdown(); 
     hello(); // after IronPython runtime was disposed 
    } 

這給我們造成:

Hello from Python 
Hello from Python 

爲什麼第二個電話hello()工程雙絞線即使運行時環境被丟棄?

回答

1

Shutdown並不實際終止運行時,它只是運行一些清理例程。然而事情可能會在一個奇怪的狀態,所以不能保證任何事情都能正常工作。

另外,hello可能(我不記得代表如何創建的確切細節)引用了運行時和引擎,保持與GC無關的所有內容。