private static void Execute(Action test, out InvalidOrderRequestException exception)
        {
            exception = null;

            try
            {
                test.Invoke();
            }
            catch (InvalidOrderRequestException ex)
            {
                exception = ex;
            }
        }
        public void Should_Not_Process_Second_Order_When_Account_Accessed_At_The_Same_Time_By_2_Cash_Cards_And_There_Is_No_Can_Left_After_First_Order()
        {
            var init      = new Initialization("Jack");
            var cashCard1 = init.CashCard1;
            var cashCard2 = init.CashCard2;

            var       vendingMachine = init.VendingMachine;
            const int pin            = 010;
            const int quantity       = 25;
            const int quantity2      = 5;

            InvalidOrderRequestException exception = null;
            var thread1 = new Thread(() => vendingMachine.ProcessOrder(cashCard1, pin, quantity));
            var thread2 = new Thread(() => Execute(() => vendingMachine.ProcessOrder(cashCard2, pin, quantity2), out exception));

            thread1.Start();
            thread2.Start();
            thread2.Join();

            Assert.IsInstanceOfType(typeof(InvalidOrderRequestException), exception);
        }