Tag:

Thread.Abort()方法冻结

所以我用AbortException搜索它因为使用不安全的代码而冻结,并且只有当控制流返回到托管代码时AbortException抛出AbortException 。 所以,在我的情况下,我有一个本地库,在一个线程中调用。 所以有时我不能中止它,因为库是本机的,而Abort方法不仅不做任何事情,而是冻结调用线程。 所以,我想解决它。 例如,使用不同的过程应该有所帮助,但它非常复杂。 因此,一个不太重的解决方案是使用’AppDomains’。 但无论如何我应该创建一个exe并调用它。 我试着像这样在内存中生成它 var appDomain = AppDomain.CreateDomain(“newDomain”); var assemblyBuilder = appDomain.DefineDynamicAssembly(new AssemblyName(“myAsm”), AssemblyBuilderAccess.RunAndCollect); var module = assemblyBuilder.DefineDynamicModule(“myDynamicModule”); var type = module.DefineType(“myStaticBulder”, TypeAttributes.Public); var methBuilder = type.DefineMethod(“exec”, MethodAttributes.Static | MethodAttributes.Public); var ilGenerator = methBuilder.GetILGenerator(); 但我发现只有EMIT方式,它非常复杂。 是否存在肤浅的解决方案?

卸载默认AppDomain的事件?

每当任何 AppDomain卸载时我都需要触发一个事件 – 包括该进程的默认事件。 AppDomain.DomainUnload的问题在于它仅针对非默认AppDomain触发。 此外,AppDomain.ProcessExit的执行时间有限,我不能依赖它。 任何关于如何实现这一点的建议将不胜感激! (或者,当后台线程(Thread.IsBackground == True)也工作时触发事件。)