public virtual void SaveToDatabase() { if (this.m_saveToDb) { using (PlayerBussiness playerBussiness = new PlayerBussiness()) { object @lock; Monitor.Enter(@lock = this.m_lock); try { for (int i = 0; i < this.m_cards.Length; i++) { UsersCardInfo usersCardInfo = this.m_cards[i]; if (usersCardInfo != null && usersCardInfo.IsDirty) { if (usersCardInfo.CardID > 0) { playerBussiness.UpdateCards(usersCardInfo); } else { playerBussiness.AddCards(usersCardInfo); } } } } finally { Monitor.Exit(@lock); } List <UsersCardInfo> removedList; Monitor.Enter(removedList = this.m_removedList); try { foreach (UsersCardInfo current in this.m_removedList) { if (current.CardID > 0) { playerBussiness.UpdateCards(current); } } this.m_removedList.Clear(); } finally { Monitor.Exit(removedList); } } } }