Example #1
0
 public void wejdz_do_kolejki(Uzytkownik uzytkownik)
 {
     if (uzytkownik.Odbior == false)
     {
         this.Nadawca.Pocket = this;
         this.Nadawca.Paczkomat.Kolejka.Enqueue(this.Nadawca);
         if (this.Nadawca.Paczkomat.Numer == NumeryPaczkomatow.jeden)
         {
             this.form.Queue1.Invoke(new Action(delegate()
             {
                 this.form.Queue1.Items.Add(this.Nadawca.Nazwa_Uzytkownika);
             }));
         }
         else if (this.Nadawca.Paczkomat.Numer == NumeryPaczkomatow.dwa)
         {
             this.form.Queue2.Invoke(new Action(delegate()
             {
                 this.form.Queue2.Items.Add(this.Nadawca.Nazwa_Uzytkownika);
             }));
         }
         else if (this.Nadawca.Paczkomat.Numer == NumeryPaczkomatow.trzy)
         {
             this.form.Queue3.Invoke(new Action(delegate()
             {
                 this.form.Queue3.Items.Add(this.Nadawca.Nazwa_Uzytkownika);
             }));
         }
     }
     else
     {
         this.Odbiorca.Pocket = this;
         this.Odbiorca.Paczkomat.Kolejka.Enqueue(this.Odbiorca);
         if (this.Odbiorca.Paczkomat.Numer == NumeryPaczkomatow.jeden)
         {
             this.form.Queue1.Invoke(new Action(delegate()
             {
                 this.form.Queue1.Items.Add(this.Odbiorca.Nazwa_Uzytkownika);
             }));
         }
         else if (this.Odbiorca.Paczkomat.Numer == NumeryPaczkomatow.dwa)
         {
             this.form.Queue2.Invoke(new Action(delegate()
             {
                 this.form.Queue2.Items.Add(this.Odbiorca.Nazwa_Uzytkownika);
             }));
         }
         else if (this.Odbiorca.Paczkomat.Numer == NumeryPaczkomatow.trzy)
         {
             this.form.Queue3.Invoke(new Action(delegate()
             {
                 this.form.Queue3.Items.Add(this.Odbiorca.Nazwa_Uzytkownika);
             }));
         }
     }
 }
Example #2
0
        public Form1()
        {
            InitializeComponent();
            object obj = new object();

            this.paczkomat1_ = new Paczkomat(NumeryPaczkomatow.jeden, this);
            this.paczkomat2_ = new Paczkomat(NumeryPaczkomatow.dwa, this);
            this.paczkomat3_ = new Paczkomat(NumeryPaczkomatow.trzy, this);
            //Paczkomat1
            this.u1 = new Uzytkownik(RodzajUzytkownika.nadawca, "Adam", paczkomat1_);  //p1
            this.u2 = new Uzytkownik(RodzajUzytkownika.nadawca, "Artur", paczkomat1_); //p2
            this.u3 = new Uzytkownik(RodzajUzytkownika.odbiorca, "Andrzej", paczkomat1_);
            this.u4 = new Uzytkownik(RodzajUzytkownika.odbiorca, "Arkadiusz", paczkomat1_);
            //Paczkomat2
            this.u5 = new Uzytkownik(RodzajUzytkownika.nadawca, "Bartek", paczkomat2_);  //p3
            this.u6 = new Uzytkownik(RodzajUzytkownika.nadawca, "Barbara", paczkomat2_); //p4
            this.u7 = new Uzytkownik(RodzajUzytkownika.odbiorca, "Bożena", paczkomat2_);
            this.u8 = new Uzytkownik(RodzajUzytkownika.odbiorca, "Bogan", paczkomat2_);
            //Paczkomat3
            this.u9  = new Uzytkownik(RodzajUzytkownika.nadawca, "Czarek", paczkomat3_); //p5
            this.u10 = new Uzytkownik(RodzajUzytkownika.nadawca, "Celina", paczkomat3_); //p6
            this.u11 = new Uzytkownik(RodzajUzytkownika.odbiorca, "Cezary", paczkomat3_);
            this.u12 = new Uzytkownik(RodzajUzytkownika.odbiorca, "Cecylia", paczkomat3_);

            this.p1_ = new Paczka(u1, u7, "Paczka 1", this);
            this.p2_ = new Paczka(u2, u11, "Paczka 2", this);
            this.p3_ = new Paczka(u5, u3, "Paczka 3", this);
            this.p4_ = new Paczka(u6, u12, "Paczka 4", this);
            this.p5_ = new Paczka(u9, u4, "Paczka 5", this);
            this.p6_ = new Paczka(u10, u8, "Paczka 6", this);

            t1 = new Thread(() =>
            {
                this.p1_.wejdz_do_kolejki(u1);
                this.p2_.wejdz_do_kolejki(u2);
                this.p3_.wejdz_do_kolejki(u3);
                this.p5_.wejdz_do_kolejki(u4);
            });

            t2 = new Thread(() =>
            {
                this.p3_.wejdz_do_kolejki(u5);
                this.p4_.wejdz_do_kolejki(u6);
                this.p1_.wejdz_do_kolejki(u7);
                this.p6_.wejdz_do_kolejki(u8);
            });

            t3 = new Thread(() =>
            {
                this.p5_.wejdz_do_kolejki(u9);
                this.p6_.wejdz_do_kolejki(u10);
                this.p2_.wejdz_do_kolejki(u11);
                this.p4_.wejdz_do_kolejki(u12);
            });

            t4 = new Thread(() =>
            {
                while (true)
                {
                    this.paczkomat1_.update_list_wys();
                    this.paczkomat2_.update_list_wys();
                    this.paczkomat3_.update_list_wys();
                }
            });
            t5 = new Thread(() =>
            {
                try
                {
                    Semafor.Semafor1.WaitOne();
                    for (int i = 0; i < 10; i++)
                    {
                        if (this.paczkomat1_.Kolejka.ElementAt(0) != null)
                        {
                            this.paczkomat1_.obsluga();
                        }
                    }
                }
                finally
                {
                    Semafor.Semafor1.Release();
                }
            });

            t6 = new Thread(() =>
            {
                try
                {
                    Semafor.Semafor2.WaitOne();
                    for (int i = 0; i < 10; i++)
                    {
                        if (this.paczkomat2_.Kolejka.ElementAt(0) != null)
                        {
                            this.paczkomat2_.obsluga();
                        }
                    }
                }
                finally
                {
                    Semafor.Semafor2.Release();
                }
            });

            t7 = new Thread(() =>
            {
                try
                {
                    Semafor.Semafor3.WaitOne();
                    for (int i = 0; i < 10; i++)
                    {
                        if (this.paczkomat3_.Kolejka.ElementAt(0) != null)
                        {
                            this.paczkomat3_.obsluga();
                        }
                    }
                }
                finally
                {
                    Semafor.Semafor3.Release();
                }
            });

            t8 = new Thread(() =>
            {
                try
                {
                    Semafor.Semafor1.WaitOne();
                    while (this.paczkomat1_.ListWys.Capacity != 0)
                    {
                        this.paczkomat1_.kurier_job();
                    }
                }
                finally
                {
                    Semafor.Semafor1.Release();
                }
            });

            t9 = new Thread(() =>
            {
                try
                {
                    Semafor.Semafor2.WaitOne();
                    while (this.paczkomat2_.ListWys.Capacity != 0)
                    {
                        this.paczkomat2_.kurier_job();
                    }
                }
                finally
                {
                    Semafor.Semafor2.Release();
                }
            });

            t10 = new Thread(() =>
            {
                try
                {
                    Semafor.Semafor3.WaitOne();

                    while (this.paczkomat3_.ListWys.Capacity != 0)
                    {
                        this.paczkomat3_.kurier_job();
                    }
                }
                finally
                {
                    Semafor.Semafor3.Release();
                }
            });
        }