调用.Net exe的main()函数的含义

时间:2010-07-20 19:57:49

标签: .net

在.net中,exes是程序集,可以像dll一样引用。这意味着它们的任何类型都可以在任何其他程序中使用,因为它们被定义为public。从代码中调用另一个exe的Main函数会有什么影响?显然,调用Main的线程将被阻塞,直到程序终止,这与产生新进程不同。这有什么其他潜在的问题?

2 个答案:

答案 0 :(得分:5)

该程序将在您的AppDomain中运行。

因此,两个程序使用的任何共享状态都可能搞砸了。

要解决此问题,您可以拨打AppDomain.ExecuteAssembly

在任何一种情况下,程序本身都可能无法正确处理它 - 当前目录,命令行参数和其他每个进程状态(如环境变量)将与父进程共享。

答案 1 :(得分:0)

我通过C#在Jeffery Richter的 CLR中查找了有关AppDomains的细节。以下是他提供的关于AppDomains为那些对可能存在腐败/开放安全漏洞的事物感到好奇的人提供的要点。

  • 由一个AppDomain中的代码创建的对象无法通过另一个AppDomain中的代码直接访问

  • 可以卸载AppDomains

  • AppDomains可以单独保护

  • AppDomains可以单独配置