Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace lab4_2
- {
- // Создать приложение, в котором генератор события “снабжает”
- // событие следующей информацией: название поезда, станция
- // назначения, станция отправления и время в пути.Приемник
- // события распечатывает эту информацию.
- class TrainEventArgs : EventArgs
- {
- string trainName;
- public string TrainName
- {
- get
- {
- return trainName;
- }
- }
- string firstStation;
- public string FirstStation
- {
- get
- {
- return firstStation;
- }
- }
- string lastStation;
- public string LastStation
- {
- get
- {
- return lastStation;
- }
- }
- int wayTime;
- public int WayTime
- {
- get
- {
- return wayTime;
- }
- }
- public TrainEventArgs(string name, string fStation, string lStation, int time)
- {
- this.trainName = name;
- this.firstStation = fStation;
- this.lastStation = lStation;
- this.wayTime = time;
- }
- }
- class GenEvent // Генератор событий - издатель
- {
- public delegate void TrainEventHandler(object sender, TrainEventArgs e);
- public event TrainEventHandler OnTrainHandler;
- public void NewEvent(string name, string fStation, string lStation, int time)
- {
- TrainEventArgs e = new TrainEventArgs(name, fStation, lStation, time);
- if (OnTrainHandler != null)
- OnTrainHandler(this, e);
- }
- //Подписчик
- class RecEvent
- {
- //Обработчик события
- void OnRecChange(object source, TrainEventArgs e)
- {
- Console.WriteLine("\nНазвание поезда: {0} \nСтанция отправления: {1} \nСтанция назначения: {2} \nВремя в пути, ч: {3}", e.TrainName, e.FirstStation, e.LastStation, e.WayTime);
- }
- // в конструкторе класса осуществляется подписка
- public RecEvent(GenEvent gnEvent)
- {
- gnEvent.OnTrainHandler += new GenEvent.TrainEventHandler(OnRecChange);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- GenEvent gnEvent = new GenEvent();
- RecEvent inventoryWatch = new RecEvent(gnEvent);
- gnEvent.NewEvent("STAR", "Kazan", "Moscow", 12);
- Console.ReadKey(true);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement