Exemplo n.º 1
0
        /// <summary>
        /// instanceが不要になっていたらコレクションから除去する
        /// </summary>
        /// <param name="instance">インスタンス</param>
        public static void TryRemoveInstance(
            SpellTimer instance)
        {
            var ttl = Settings.Default.TimeOfHideSpell + 30;

            lock (instance)
            {
                if (instance.CompleteScheduledTime != DateTime.MinValue &&
                    (DateTime.Now - instance.CompleteScheduledTime).TotalSeconds >= ttl)
                {
                    // ガーベージタイマを止める
                    instance.StopGarbageInstanceTimer();

                    SpellTimer o;
                    instanceSpells.TryRemove(instance.SpellTitleReplaced, out o);

                    // スペルコレクション本体から除去する
                    lock (lockObject)
                    {
                        table.Remove(instance);
                    }

                    instance.Dispose();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// instanceが不要になっていたらコレクションから除去する
        /// </summary>
        /// <param name="instance">インスタンス</param>
        public void TryRemoveInstance(
            SpellTimer instance)
        {
            var ttl = Settings.Default.TimeOfHideSpell + 30;

            lock (instance)
            {
                if (instance.CompleteScheduledTime != DateTime.MinValue &&
                    (DateTime.Now - instance.CompleteScheduledTime).TotalSeconds >= ttl)
                {
                    // ガーベージタイマを止める
                    instance.StopGarbageInstanceTimer();

                    if (!instance.IsInstance ||
                        instance.IsTemporaryDisplay)
                    {
                        return;
                    }

                    this.instanceSpells.TryRemove(instance.SpellTitleReplaced, out SpellTimer o);

                    // スペルコレクション本体から除去する
                    lock (lockObject)
                    {
                        this.table.Remove(instance);
                    }

                    // コンパイル済みリストから除去する
                    TableCompiler.Instance.RemoveSpell(instance);

                    instance.Dispose();
                }
            }
        }