public void TransferToCard(decimal amount, BankCard recipient) { lock (_sync) { _moneyAmount -= amount; recipient.ReceivePayment(amount); } }
public void TransferToCard(decimal amount, BankCard recipient) { //bool lockTaken = false; //try //{ // Monitor.Enter(_sync, ref lockTaken); // _moneyAmount -= amount; // recipient.ReceivePayment(amount); //} //finally //{ // if (lockTaken) // Monitor.Exit(_sync); //} //Monitor.Exit(_sync); using (_sync.Lock(TimeSpan.FromSeconds(3))) { _moneyAmount -= amount; recipient.ReceivePayment(amount); } }