コード例 #1
0
ファイル: Unloader.cs プロジェクト: zhangzheng1205/AutoCSer
 internal static void Remove(ref UnloadInfo unloadInfo)
 {
     Monitor.Enter(unloaderLock);
     unloaders.Remove(unloadInfo);
     Monitor.Exit(unloaderLock);
     unloadInfo.Unload = null;
 }
コード例 #2
0
ファイル: Unloader.cs プロジェクト: zhangzheng1205/AutoCSer
        internal static void Add(object unload, Type type)
        {
            UnloadInfo unloadInfo = new UnloadInfo {
                Unload = unload, Type = type
            };

            Add(ref unloadInfo);
        }
コード例 #3
0
ファイル: Unloader.cs プロジェクト: zhangzheng1205/AutoCSer
        internal static bool Remove(object unload, Type type, bool isRun)
        {
            UnloadInfo unloadInfo = new UnloadInfo {
                Unload = unload, Type = type
            };

            Monitor.Enter(unloaderLock);
            bool isRemove = unloaders.Remove(unloadInfo);

            Monitor.Exit(unloaderLock);
            if (isRemove && isRun)
            {
                unloadInfo.Call();
            }
            return(isRemove);
        }
コード例 #4
0
ファイル: Unloader.cs プロジェクト: zhangzheng1205/AutoCSer
 internal static void Add(ref UnloadInfo unloadInfo)
 {
     Monitor.Enter(unloaderLock);
     try
     {
         if (State == State.Run || State == State.WaitTransaction)
         {
             unloaders.Add(unloadInfo);
             unloadInfo.Type = Type.None;
         }
     }
     finally
     {
         Monitor.Exit(unloaderLock);
         unloadInfo.Call();
     }
 }
コード例 #5
0
ファイル: Unloader.cs プロジェクト: zhangzheng1205/AutoCSer
        /// <summary>
        /// 添加应用程序卸载处理
        /// </summary>
        /// <param name="unload">卸载处理函数</param>
        /// <param name="type"></param>
        internal static void AddLast(object unload, Type type)
        {
            UnloadInfo unloadInfo = new UnloadInfo {
                Unload = unload, Type = type
            };

            Monitor.Enter(unloaderLock);
            try
            {
                if (State == State.Run || State == State.WaitTransaction)
                {
                    lastUnloaders.Add(unloadInfo);
                    unloadInfo.Type = Type.None;
                }
            }
            finally
            {
                Monitor.Exit(unloaderLock);
                unloadInfo.Call();
            }
        }