在.net中,exes是程序集,可以像dll一样引用。这意味着它们的任何类型都可以在任何其他程序中使用,因为它们被定义为public
。从代码中调用另一个exe的Main
函数会有什么影响?显然,调用Main
的线程将被阻塞,直到程序终止,这与产生新进程不同。这有什么其他潜在的问题?
答案 0 :(得分:5)
该程序将在您的AppDomain中运行。
因此,两个程序使用的任何共享状态都可能搞砸了。
要解决此问题,您可以拨打AppDomain.ExecuteAssembly
。
在任何一种情况下,程序本身都可能无法正确处理它 - 当前目录,命令行参数和其他每个进程状态(如环境变量)将与父进程共享。
答案 1 :(得分:0)
我通过C#在Jeffery Richter的 CLR中查找了有关AppDomains的细节。以下是他提供的关于AppDomains为那些对可能存在腐败/开放安全漏洞的事物感到好奇的人提供的要点。
由一个AppDomain中的代码创建的对象无法通过另一个AppDomain中的代码直接访问
可以卸载AppDomains
AppDomains可以单独保护
AppDomains可以单独配置