示例#1
0
 public bool Start()
 {
     lock (this)
     {
         if (mAppDomain == null)
         {
             try
             {
                 IsStarting = true;
                 System.IO.Directory.Delete(CachePath, true);
                 OnLoad();
                 CallLogEvent(ExecutingStatus.Success, null, string.Format("domain [{0}] creating.", this.VirtualName));
                 mDomainAssembly.LoadAssembly(FullPath);
                 CallLogEvent(ExecutingStatus.Success, null, string.Format("domain [{0}] load assembly.", this.VirtualName));
                 mDomainAssembly.Start();
                 CallLogEvent(ExecutingStatus.Success, null, string.Format("domain [{0}] start.", this.VirtualName));
                 mAppDomain.DomainUnload += OnUnload;
                 mStatus = DomainStatus.Started;
                 return(true);
             }
             catch (Exception e_)
             {
                 try
                 {
                     if (mAppDomain != null)
                     {
                         AppDomain.Unload(mAppDomain);
                     }
                 }
                 catch
                 {
                 }
                 mAppDomain    = null;
                 LastException = e_;
                 CallLogEvent(ExecutingStatus.Error, e_, string.Format("domain [{0}] start error.", this.VirtualName));
                 return(false);
             }
             finally
             {
                 IsStarting = false;
             }
         }
         return(true);
     }
 }
 public static string ToSerialString(this DomainStatus value) => value switch
 {
示例#3
0
 public SetStatus(string domain, DomainStatus status)
 {
     (Domain, Status) = (domain, status);
 }
        internal static string ToSerializedValue(this DomainStatus value)
        {
            switch (value)
            {
            case DomainStatus.Active:
                return("Active");

            case DomainStatus.Awaiting:
                return("Awaiting");

            case DomainStatus.Cancelled:
                return("Cancelled");

            case DomainStatus.Confiscated:
                return("Confiscated");

            case DomainStatus.Disabled:
                return("Disabled");

            case DomainStatus.Excluded:
                return("Excluded");

            case DomainStatus.Expired:
                return("Expired");

            case DomainStatus.Failed:
                return("Failed");

            case DomainStatus.Held:
                return("Held");

            case DomainStatus.Locked:
                return("Locked");

            case DomainStatus.Parked:
                return("Parked");

            case DomainStatus.Pending:
                return("Pending");

            case DomainStatus.Reserved:
                return("Reserved");

            case DomainStatus.Reverted:
                return("Reverted");

            case DomainStatus.Suspended:
                return("Suspended");

            case DomainStatus.Transferred:
                return("Transferred");

            case DomainStatus.Unknown:
                return("Unknown");

            case DomainStatus.Unlocked:
                return("Unlocked");

            case DomainStatus.Unparked:
                return("Unparked");

            case DomainStatus.Updated:
                return("Updated");

            case DomainStatus.JsonConverterFailed:
                return("JsonConverterFailed");
            }
            return(null);
        }
示例#5
0
        public bool Start()
        {
            lock (this)
            {
                if (mAppDomain == null)
                {
                    try
                    {
                        IsStarting = true;
                        System.IO.Directory.Delete(CachePath,true);
                        OnLoad();
                        CallLogEvent(ExecutingStatus.Success, null, string.Format("domain [{0}] creating.", this.VirtualName));
                        mDomainAssembly.LoadAssembly(FullPath);
                        CallLogEvent(ExecutingStatus.Success, null, string.Format("domain [{0}] load assembly.", this.VirtualName));
                        mDomainAssembly.Start();
                        CallLogEvent(ExecutingStatus.Success, null, string.Format("domain [{0}] start.", this.VirtualName));
                        mAppDomain.DomainUnload += OnUnload;
                        mStatus = DomainStatus.Started;
                        return true;
                    }
                    catch (Exception e_)
                    {
                        try
                        {
                            if (mAppDomain != null)
                            {

                                AppDomain.Unload(mAppDomain);

                            }
                        }
                        catch
                        {
                        }
                        mAppDomain = null;
                        LastException = e_;
                        CallLogEvent(ExecutingStatus.Error, e_, string.Format("domain [{0}] start error.", this.VirtualName));
                        return false;
                    }
                    finally
                    {
                        IsStarting = false;
                    }
                }
                return true;

            }

        }
示例#6
0
 private void OnUnload(object sender, EventArgs e)
 {
     
     mStatus = DomainStatus.Stoped;
     CallLogEvent(ExecutingStatus.Warning, null, string.Format("domain [{0}] unload.", this.VirtualName));
 }
示例#7
0
 private void OnUnload(object sender, EventArgs e)
 {
     mStatus = DomainStatus.Stoped;
     CallLogEvent(ExecutingStatus.Warning, null, string.Format("domain [{0}] unload.", this.VirtualName));
 }
示例#8
0
 /// <summary>
 /// Converts the <see cref="sourceValue" /> parameter to the <see cref="destinationType" /> parameter using <see cref="formatProvider"
 /// /> and <see cref="ignoreCase" />
 /// </summary>
 /// <param name="sourceValue">the <see cref="System.Object"/> to convert from</param>
 /// <param name="destinationType">the <see cref="System.Type" /> to convert to</param>
 /// <param name="formatProvider">not used by this TypeConverter.</param>
 /// <param name="ignoreCase">when set to <c>true</c>, will ignore the case when converting.</param>
 /// <returns>
 /// an instance of <see cref="DomainStatus" />, or <c>null</c> if there is no suitable conversion.
 /// </returns>
 public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => DomainStatus.CreateFrom(sourceValue);