コード例 #1
0
ファイル: IZeroObject.cs プロジェクト: ym1100/MicroZero
 /// <summary>
 ///     对象活动时登记
 /// </summary>
 public static void OnGlobalStart(IZeroObject obj)
 {
     lock (GlobalObjects)
     {
         GlobalObjects.Add(obj);
         ZeroTrace.SystemLog(obj.Name, "GlobalStart");
     }
 }
コード例 #2
0
ファイル: IZeroObject.cs プロジェクト: ym1100/MicroZero
 /// <summary>
 ///     对象关闭时登记
 /// </summary>
 public static void OnObjectFailed(IZeroObject obj)
 {
     lock (ActiveObjects)
     {
         FailedObjects.Add(obj);
         ZeroTrace.WriteError(obj.Name, "Failed");
         if (ActiveObjects.Count + FailedObjects.Count == ZeroObjects.Count)
         {
             ActiveSemaphore.Release(); //发出完成信号
         }
     }
 }
コード例 #3
0
ファイル: IZeroObject.cs プロジェクト: ym1100/MicroZero
 /// <summary>
 ///     对象关闭时登记
 /// </summary>
 public static void OnObjectClose(IZeroObject obj)
 {
     lock (ActiveObjects)
     {
         ActiveObjects.Remove(obj);
         ZeroTrace.SystemLog(obj.Name, "Closed");
         if (ActiveObjects.Count == 0)
         {
             ActiveSemaphore.Release(); //发出完成信号
         }
     }
 }
コード例 #4
0
ファイル: IZeroObject.cs プロジェクト: ym1100/MicroZero
 /// <summary>
 ///     对象活动时登记
 /// </summary>
 public static void OnObjectActive(IZeroObject obj)
 {
     lock (ActiveObjects)
     {
         ActiveObjects.Add(obj);
         ZeroTrace.SystemLog(obj.Name, "Run");
         if (ActiveObjects.Count + FailedObjects.Count == ZeroObjects.Count)
         {
             ActiveSemaphore.Release(); //发出完成信号
         }
     }
 }
コード例 #5
0
ファイル: IZeroObject.cs プロジェクト: ym1100/MicroZero
 /// <summary>
 ///     对象活动时登记
 /// </summary>
 public static void OnGlobalEnd(IZeroObject obj)
 {
     lock (GlobalObjects)
     {
         GlobalObjects.Remove(obj);
         ZeroTrace.SystemLog(obj.Name, "GlobalEnd");
         if (GlobalObjects.Count == 0)
         {
             GlobalSemaphore.Release();
         }
     }
 }
コード例 #6
0
ファイル: IZeroObject.cs プロジェクト: ym1100/MicroZero
        /// <summary>
        ///     注册对象
        /// </summary>
        public static bool RegistZeroObject(IZeroObject obj)
        {
            if (obj.GetType().IsSubclassOf(typeof(ApiStation)))
            {
                ZeroDiscover.DiscoverApiDocument(obj.GetType());
            }
            using (OnceScope.CreateScope(ZeroObjects))
            {
                if (ZeroObjects.ContainsKey(obj.Name))
                {
                    return(false);
                }
                ZeroTrace.SystemLog("RegistZeroObject", obj.Name);
                ZeroObjects.Add(obj.Name, obj);
                if (ApplicationState >= StationState.Initialized)
                {
                    try
                    {
                        obj.OnZeroInitialize();
                        ZeroTrace.SystemLog(obj.Name, "Initialize");
                    }
                    catch (Exception e)
                    {
                        ZeroTrace.WriteException(obj.Name, e, "Initialize");
                    }
                }

                if (!CanDo)
                {
                    return(true);
                }
                try
                {
                    ZeroTrace.SystemLog(obj.Name, "Start");
                    obj.OnZeroStart();
                }
                catch (Exception e)
                {
                    ZeroTrace.WriteException(obj.Name, e, "Start");
                }
            }
            return(true);
        }