Jan 10, 2014

მოვლენები (2/3) - მოვლენის მსმენელი


ამ პოსტში მინდა ვისაუბრო იმ მოვლენისა და კლასების გამოყენებაზე, რომელიც განვსაზღვრე წინა პოსტში და მოვახდინო მათი ინტეგრირება მხოლოდ ერთი მარრტივი კლასის დახმარებით, რაც მთლიანობაში აზრობრივად დაასრულებს მოვლენებს, ხოლო მესამე ნაწილი დაეთმობა სუსტ მოვლენებს (Weak Events).
კლასი User.cs გამოიყენება, როგორც მოვლენის მსმენელი. ეს კლასი იწერს JobDealer.cs ის მოვლენას და განსაზღვრავს ახალ მეთოდს, NewJobIsAvaiilable, რომელიც აკმაყოფილებს EventHandler<JobInfoEventArgs> ტიპის დელეგატის ყველა მოთხოვნას, კერძოდ, აქვს ორი პარამეტრი: ობიექტი და JobInfoEventArgs

public class User
        {
            private string name;

            public User(string Name)
            {
                this.name = Name;
            }

            public void NewJobIsAvailable(object sender, JobInfoEventArgs e)
            {
                Console.WriteLine("{0}: job {1} is new and available", name, e.Job);
            }
        }

ახლა მოვლენის გამომქვეყნებელი და მისი გამომწერი უნდა დაუკავშირდნენ ერთმანეთს რამენაირად. ამის გაკეთება კი შესაძლებელია NewJobInfo მოვლენის გამოყენებით, რომელიც განსაზღვრულია JobDealer.cs ში. გამოვიყენებ += ოპერატორს გამოწერის შესასრულებლად. მოცემულია სანიმუშო კოდი, ქვემოთ

static void Main(string[] args)
        {
            var dealer = new JobDealer();

            var Misha = new User("MISHA");
            dealer.NewJobInfo += Misha.NewJobIsAvailable;

            dealer.NewJob("Manager");

            var Giorgi = new User("GIORGI");
            dealer.NewJobInfo += Giorgi.NewJobIsAvailable;

            dealer.NewJob("Developer");
            Console.ReadKey();
        }

პროგრამის გაშვების შემთხვევაში გვექნება




ყოველი ახალი სამსახურის დამატებისას, ის მომხმარებელი, რომელსაც გამოწერილი აქვს მოვლენა, მისდის შეტყობინება ახალი სამსახურის შესახებ, როდესაც ხდება მოვლენის გააქტიურება. 

No comments:

Post a Comment