/// <summary> /// Works on task for some time /// </summary> /// <param name="task"></param> void WorkOnTask(BaseEventArgs task) { Console.WriteLine((threadTime / 1000.0).ToString() + " | task | bank | " + task.EventType.ToString()); log.WriteLine((threadTime / 1000.0).ToString() + " | task | bank | " + task.EventType.ToString()); int addTime = gen.Next(100, 2000); Thread.Sleep(addTime); threadTime += addTime; SendNullMessages(); if (task.EventType == EventType.WithdrawMoney) { if (gen.Next(0, 2) == 0) { //bank confirms withdrawal ToBuyerEvent?.Invoke(this, new BankEventArgs(EventType.ConfirmMoneyWithdrawal, threadTime)); log.WriteLine((threadTime / 1000.0).ToString() + " | message | bank => buyer | ConfirmMoneyWithdrawal"); } else { //bank refuses withdrawal ToBuyerEvent?.Invoke(this, new BankEventArgs(EventType.RefuseMoneyWithdrawal, threadTime)); log.WriteLine((threadTime / 1000.0).ToString() + " | message | bank => buyer | RefuseMoneyWithdrawal"); } } }
/// <summary> /// Send null messages in all channels /// </summary> void SendNullMessages() { ToShopEvent?.Invoke(this, new BankEventArgs(EventType.Null, threadTime)); log.WriteLine((threadTime / 1000.0).ToString() + " | message | bank => shop | Null"); ToBuyerEvent?.Invoke(this, new BankEventArgs(EventType.Null, threadTime)); log.WriteLine((threadTime / 1000.0).ToString() + " | message | bank => buyer | Null"); }