/// <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(); } } }
/// <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(); } } }