public Teller(UIHelper uiHelper, CancellationToken ct, Bank b) { this.uiHelper = uiHelper; this.cancelToken = ct; this.bank = b; this.customerGoalAmount = uiHelper.GetCustomerGoalAmount(); // a bit of a hack task = Task.Factory.StartNew(TellerProc, cancelToken); uiHelper.AddTellerStartedMessage(task.Id); }
public BankSimulator(UIHelper uiHelper, int numTellers, int numCustomers, decimal custGoalAmount, decimal initialBankVaultBalance, decimal maxTransactionAmount, decimal custInitialAmount) { uiHelper.StartButton(true); this.uiHelper = uiHelper; this.cancelTokenSource = new CancellationTokenSource(); CancellationToken ct = cancelTokenSource.Token; int timeoutThrottle = 10; this.bank = new Bank(uiHelper, ct, numTellers, numCustomers, custInitialAmount, initialBankVaultBalance); // Cannot start the transaction Generator until the CustomerList is ready (ie not null) while (bank.Customers==null) { //Thread.Sleep(100); } this.transactionGenerator = new TransactionGenerator(uiHelper, ct, bank.BankQueue, bank.Customers, maxTransactionAmount, timeoutThrottle); }
public TransactionGenerator(UIHelper uiHelper, CancellationToken cancelToken, BankQueue bankQueue, CustomerList customerList, int maxTransAmount, int timeOutThrottle, /*List<Teller> tellers,*/ BlockingCollection <Teller> tellers, Bank bank) { this.cancelToken = cancelToken; this.customerList = customerList; this.maxTransAmount = maxTransAmount; this.uiHelper = uiHelper; this.timeOutThrottle = timeOutThrottle; this.bankQueue = bankQueue; this.bank = bank; currentTranAmount = 0; rand = new Random(); this.tellers = tellers; availTellerQueue = new BlockingCollection <Teller>(); unAvailTellerQueue = new BlockingCollection <Teller>(); foreach (Teller tel in tellers) { availTellerQueue.Add(tel); } task = new Task(Generate); task.Start(); }