2010-07-28 87 views

回答

2

應用程序域是純粹的CLR概念,它們與任何不是託管庫的任何關聯都沒有關聯,因此無法在appdomain中運行批處理文件。運行批處理文件的Process對象將綁定到一個特定的AppDomain,但它仍然會導致實例化單獨的進程以運行您的批處理文件。

下的一些相當不錯的說明文字的MSDN文檔AppDomain Class應該幫助您得到精確的一個AppDomain是什麼手柄,以及你能不能與一個做備註

3

否。AppDomain是純粹的CLRs的概念,而*.bat文件在「內部」通常的Windows中執行。

+0

除了我上面的問題,應用程序域不能執行非託管程序集? 坦率地說,我是Application Domain的新手。 – xport 2010-07-28 08:21:50

+0

@xport Application Domain可以執行非託管C++/CLI程序集,但批處理文件不會構成非託管程序集。 – 2010-07-28 08:28:59

+0

+1,但我會添加批處理文件作爲任何其他可執行文件在自己的進程中運行。 – kenny 2010-07-28 08:57:01

2

如果您需要從C#執行批處理文件,請使用Process類。

Process myProcess = new Process(); 
myProcess.StartInfo.FileName = "C:\\HelloWorld.bat"; 
myProcess.Start(); 

批處理文件不是CLR的一部分,因此無法在AppDomain中運行。

+0

您的代碼段使用進程而不是ApplicationDomain調用批處理文件。我故意選擇ApplicationDomain是因爲它的效率方面。 – xport 2010-07-28 08:13:21

+0

我的場景不允許多個進程運行;它會打破可擴展性。 – xport 2010-07-28 08:16:32

+0

@xport - 夠公平的。你沒有在你的問題中提供這些細節,並且我認爲你可能不知道「進程」。在這種情況下,我必須同意@Anton Gogolev - 不可能在AppDomain中運行批處理文件。 – Oded 2010-07-28 08:19:45

相關問題