static void Main()
    {
        Person anonymous = new Person();
        Console.WriteLine("Person 1: name: {0}, age: {1}",
            anonymous.Name, anonymous.Age);

        Person peter = new Person("Peter", 19);
        Console.WriteLine("Person 2: name: {0}, age: {1}",
            peter.Name, peter.Age);
        Console.WriteLine();

        AlarmClock defaultAlarm = new AlarmClock();
        Console.WriteLine("Wake up! It's {0:D2}:{1:D2} o'clock.",
            defaultAlarm.Hours, defaultAlarm.Minutes);

        AlarmClock earlyAlarm = new AlarmClock(5, 15);
        Console.WriteLine("Wake up! It's {0:D2}:{1:D2} o'clock.",
            earlyAlarm.Hours, earlyAlarm.Minutes);
        Console.WriteLine();

        Point centerPoint = new Point();
        centerPoint.Name = "Center of the coordinate system";
        Console.WriteLine("First point: ({0},{1}) has name '{2}'",
        centerPoint.XCoord, centerPoint.YCoord, centerPoint.Name);

        Point point77 = new Point(7,7);
        Console.WriteLine("Second point: ({0},{1}) has name '{2}'",
            point77.XCoord, point77.YCoord, point77.Name);
        Console.WriteLine();
    }
 private void Context()
 {
     ManualTestingTimer = new ManualTimer();
     AdvisorAlarmClock = new AlarmClock(ManualTestingTimer);
     AdvisorAlarmClock.OnAlarm += (sndr, e) =>
                                      {
                                          AlarmWentOff = true;
                                          CurrentTime = e.Time;
                                      };
     GivenInterval = 100;
     AdvisorAlarmClock.SetFor(GivenInterval);
 }
示例#3
0
		private WaitHandle			notifyObject;	// Who do notify when object disposed

		//
		// Private constructor - used to ensure all constructors initialise
		// the object in the same way.
		//
		private Timer(TimerCallback callback, Object state)
		{
			//
			// Validate the parameters.
			//
			if (callback == null)
				throw new ArgumentNullException("callback");
			//
			// If this is the first timer constructed allocate resources
			// for the timer thread and start it.
			//
			lock (typeof(Timer))
			{
				if (Timer.alarmClock == null)
				{
					if (!Thread.CanStartThreads())
						throw new NotImplementedException();
					Timer.alarmClock = new AlarmClock();
					Timer.disposeQueue = new System.Collections.Queue();
					Timer.now = Timer.UtcMilliseconds();
					Timer.threadWakeup = new AutoResetEvent(false);
					Timer.timerThread = new Thread(new ThreadStart(Timer.Run));
					Timer.timerThread.IsBackground = true;
					Timer.timerThread.Start();
				}
			}
			//
			// Initialize the timer state.
			//
			lock (this)
			{
				this.disposed = false;
				this.alarm = Timer.alarmClock.CreateAlarm(
					new AlarmClock.AlarmExpiredHandler(this.fireTimer));
				this.callback = callback;
				this.state = state;
			}
		}
示例#4
0
        static void Main(string[] args)
        {
            var d = new Dispatcher();
            var midgetHouse = new MidgetHouse(d);
            d.Subscribe<OrderPlaced>(midgetHouse);
            d.Subscribe<DodgyOrderPlaced>(midgetHouse);
            var manager = new Manager();
            var cashier = new Cashier(d);
            var ass = new AssMan(d);

            var cookDispatcher = new SmartDispatcher<CookFood>();
            var cookTtlGate = new TimeToLiveGate<CookFood>(cookDispatcher);
            var cookQueudHandler = new QueuedHandler<CookFood>(cookTtlGate, "cook ttl gate");
            var cookLimiter = new Limiter<CookFood>(cookQueudHandler);
            //var cookScrewsUp = new ScrewsUp<CookFood>(cookLimiter);

            var alarmClock = new AlarmClock(d);

            var messageMonitor = new MessageMonitor(d);
            var fmm = new FilePerOrderMonitor(d);

            d.Subscribe(alarmClock);
            d.Subscribe(cookLimiter);
            d.Subscribe(ass);
            d.Subscribe(cashier);
            d.Subscribe(manager);
            d.Subscribe<OrderPlaced>(messageMonitor);
            d.Subscribe<DodgyOrderPlaced>(messageMonitor);
            d.Subscribe<OrderPlaced>(fmm);
            d.Subscribe<DodgyOrderPlaced>(fmm);

            var cookQueudHandler1 = new QueuedHandler<CookFood>(new Cook(d, 10000), "c1");
            cookDispatcher.AddHandler(cookQueudHandler1);
            var cookQueudHandler2 = new QueuedHandler<CookFood>(new Cook(d, 5000), "c2");
            cookDispatcher.AddHandler(cookQueudHandler2);
            var cookQueudHandler3 = new QueuedHandler<CookFood>(new Cook(d, 100), "c3");
            cookDispatcher.AddHandler(cookQueudHandler3);

            var queueMonitor = new QueueMonitor(new IAmMonitored[] {cookQueudHandler1, cookQueudHandler2, cookQueudHandler3, cookQueudHandler,d.QueudHandler});

            //Cook cook = new Cook(ass);
            var waiter = new Waiter(d);

            cookQueudHandler1.Start();
            cookQueudHandler2.Start();
            cookQueudHandler3.Start();
            cookQueudHandler.Start();
            d.Start();
            alarmClock.Start();
            queueMonitor.Start();

            new Thread(TryPay).Start(cashier);

            Random r = new Random();
            for (int i = 0; i < 500; i++)
            {
                Guid orderNumber;
                if (r.Next()%2 == 0)
                {
                    orderNumber = waiter.PlaceDodgyOrder(new[] {Tuple.Create("Burger", 1)}, 15);

                }
                else
                {
                    orderNumber = waiter.PlaceOrder(new[] { Tuple.Create("Burger", 1) }, 15);
                }

                if(i > 2)Thread.Sleep(2000);

                orders.TryAdd(orderNumber, null);
            }
            //var orderNumber = waiter.PlaceOrder(new[] {Tuple.Create("Burger", 1)}, 15);
            //cashier.PayForOrder(orderNumber);
            Console.ReadLine();
        }
示例#5
0
				/// <summary>Create a new Alarm.</summary>
				public Alarm(AlarmClock alarmClock, AlarmExpiredHandler alarmExpired)
				{
					lock (this)
					{
						this.alarmClock = alarmClock;
						this.AlarmExpired = alarmExpired;
						this.ExpiryTime = DISABLED;
					}
				}
 public void Start()
 {
     alarm          = new AlarmClock();
     alarm.OnAlarm += new AlarmClockEventHandler(alarm_OnAlarm);
     alarm.Start(1000);
 }
 public Alarm(AlarmClock alarmClock)
 {
     _coolDown   = false;
     _alarmClock = alarmClock;
 }
 public Alarm()
 {
     _coolDown   = false;
     _alarmClock = new AlarmClock(DateTime.Now.AddMinutes(-1), DateTime.Now.AddMinutes(-1));
 }
示例#9
0
 public SuspectCustomerProcess(Handles <Messages.PrepareFood> kitchen, AssistantManager assistantManager, Cashier cashier, EnterpriseExcel reporting, AlarmClock alarmClock)
 {
     this.assistantManager = assistantManager;
     this.cashier          = cashier;
     this.reporting        = reporting;
     this.alarmClock       = alarmClock;
     this.kitchen          = kitchen;
 }