Пример #1
0
        public bool UnloadAppDomain(string friendlyName)
        {
            AppDomain value = AppDomains.FirstOrDefault(ad => ad.FriendlyName.Equals(friendlyName));

            if (value == null)
            {
                return(false);
            }
            UnloadAppDomain(value);
            return(true);
        }
Пример #2
0
        public T CreateNewAppDomain <T>(string domainName) where T : class
        {
            // ReSharper disable once InvertIf
            if (AppDomains.FirstOrDefault(ad => ad.FriendlyName.Equals(domainName)) == null)
            {
                AppDomain domain = AppDomain.CreateDomain(domainName, AppDomain.CurrentDomain.Evidence, _appDomainSetup);
                AppDomains.Add(domain);

                // HARD-CODED constant
                Tracer.Instance.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 0, "AppDomain {0} created.", domainName);

                //! This bypasses the Main method as it's not executing it.
                object instance = domain.CreateInstanceAndUnwrap(typeof(T).Assembly.FullName, typeof(T).FullName);
                Instances.Add(new KeyValuePair <string, object>(domainName, instance));

                // HARD-CODED constant
                Tracer.Instance.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 0, "AppDomain Instance {0} created.", typeof(T).FullName);
                //x return AppDomainInstances.Last() as T;
                return(instance as T);
            }
            return(null);
        }