AppDomain.Execute 程序集卡住
Posted
技术标签:
【中文标题】AppDomain.Execute 程序集卡住【英文标题】:AppDomain.Execute Assembly gets stuck 【发布时间】:2013-08-14 20:03:53 【问题描述】:我对这个命令有问题ExecuteAssembly
我让我的应用程序使用管道流数据运行,然后我切换到使用 netnamed 管道的 wcf。
这与问题无关。
服务器一旦启动,就会执行一些操作,其中之一是执行运行客户端并连接到服务器的程序集。
代码:
String modulePath = (String)path;
AppDomainSetup objDomainSetup = new AppDomainSetup() ApplicationBase = Path.GetDirectoryName(modulePath) ;
string moduleConfigPath = String.Format("0.config", modulePath);
if (File.Exists(moduleConfigPath))
// This is important... in case the loding module has a configuration file.
objDomainSetup.ConfigurationFile = moduleConfigPath;
//We give the new app domain the same permission its parent has.
System.Security.Policy.Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
System.Security.Policy.Evidence objEvidence = new System.Security.Policy.Evidence(baseEvidence);
objModuleDomain = AppDomain.CreateDomain(ChannelName, objEvidence, objDomainSetup);
objModuleDomain.ExecuteAssembly(modulePath);
我检查了路径,一切似乎都是正确的,并且从路径指向的 .exe 被执行。 但是 ExecuteAssembly 卡在那里,下面的语句没有被执行。
有什么猜测吗? 谢谢
【问题讨论】:
您的 .exe (modulePath) 完成并退出还是继续运行?我相信 ExecuteAssembly 会阻塞,直到您的模块返回。 我的 .exe main() 函数创建客户端实例,连接并休眠(无限)但执行程序集没有阻塞 实际上我让这段代码以这种方式与管道流一起工作并且它没有阻塞。 【参考方案1】:AppDomain.ExecuteAssembly()
执行程序集并在程序集 .exe
完成时完成。
我有一个 Sleep(Infinite) 使装配无法完成。
【讨论】:
以上是关于AppDomain.Execute 程序集卡住的主要内容,如果未能解决你的问题,请参考以下文章
问题集录--Android:解决Studio新建项目时,在 Building gradle project info 一直卡住