public void Zaustavi() { Dnevnik.PisiSaThredom("Zaustavljanje threadova."); try { for (int i = 0; i < pisacZaglavlja.Length; i++) { pisacZaglavlja[i].Zaustavi(); } for (int i = 0; i < citacZaglavlja.Length; i++) { citacZaglavlja[i].Zaustavi(); } for (int i = 0; i < citacOglasa.Length; i++) { citacOglasa[i].Zaustavi(); } //EventLogger.WriteEventInfo("Glavna obrada zaustavljena."); Dnevnik.PisiSaThredom("Glavna obrada zaustavljena (poslate komande za zaustavljanje."); } catch (Exception ex) { EventLogger.WriteEventError("Glavna obrada nije uspešno zaustavljena.", ex); } }
public GlavnaObrada() { Dnevnik.Pisi("Inicijalizacija glavne obrade"); // Inicijalizacija liste strana zaglavlja procitaneStraneZaglavlja = new Common.Http.StranaLista(Properties.Settings.Default.BrojStranaZaglavlja); // Inicijalizacija liste strana oglasa procitaneStraneOglasa = new Common.Http.StranaLista(Properties.Settings.Default.BrojStranaOglasa); // Inicijalizacija brojaca strane zaglavlja brojacStraneZaglavlja = new Common.Http.Brojac(); // inicijalizacija pisca zaglavlja for (int i = 0; i < pisacZaglavlja.Length; i++) { pisacZaglavlja[i] = new PisacZaglavlja(ref procitaneStraneZaglavlja, brojacStraneZaglavlja, i); } // inicijalizacija citaca zaglavlja for (int i = 0; i < citacZaglavlja.Length; i++) { citacZaglavlja[i] = new CitacZaglavlja(ref procitaneStraneZaglavlja, ref procitaneStraneOglasa, i); } // inicijalizacija citaca oglasa for (int i = 0; i < citacOglasa.Length; i++) { citacOglasa[i] = new CitacOglasa(ref procitaneStraneOglasa, i); } //EventLogger.WriteEventInfo("Glavna obrada inicijalizovana."); }
public ActionResult Zabiljeska(int?idpr) { Prakse p = db.prakse.Find(idpr); if (DateTime.Now.Date < p.datumPocetka || DateTime.Now.Date > p.datumKraja) { return(Content("Zabilješke se mogu upisivati samo tokom trajanja prakse.")); } Dnevnik d = null; try { DateTime n = DateTime.Now.Date; d = db.dnevnik.Single(x => x.idpraksa == idpr && x.datum == n); } catch { d = new Dnevnik() { idpraksa = (int)idpr, zabiljeska = "", datum = DateTime.Now.Date }; db.dnevnik.Add(d); db.SaveChanges(); } return(View(d)); }
protected override void RadiObradu() { while (radi) { StranaOglasa stranaOglasa = procitaneStrane.Uzmi() as StranaOglasa; if (stranaOglasa != null) { Common.Model.Vehicle.Automobile auto = null; try { if (stranaOglasa.Procitaj()) { auto = stranaOglasa.Automobil; if (auto != null) { autoDB.Save(auto); Dnevnik.PisiSaImenomThreda("Dodat oglas u bazu: " + auto.ToString()); } } else { Dnevnik.PisiSaThredomGreska("Nisam uspeo da pročitam stranu. URL: " + stranaOglasa.Adresa); } } catch (Exception ex) { EventLogger.WriteEventError(string.Format("Nisam uspeo da dodam automobil (br.ogl.{0}) u bazu.\nURL: {1}", auto.BrojOglasa, stranaOglasa.Adresa), ex); } } else { EventLogger.WriteEventWarning("Dobijena null vrednost za stranu iz liste procitanih strana. Proveri zasto."); } } }
public void Stop() { Dnevnik.PisiSaImenomThreda("Zaustavljanje threadova."); try { for (int i = 0; i < pisacZaglavlja.Length; i++) { pisacZaglavlja[i].Zaustavi(); } for (int i = 0; i < citacZaglavlja.Length; i++) { citacZaglavlja[i].Zaustavi(); } for (int i = 0; i < citacOglasa.Length; i++) { citacOglasa[i].Zaustavi(); } Procode.PolovniAutomobili.Data.Provider.DataInstance.Data.Close(); Dnevnik.PisiSaImenomThreda("Glavna obrada zaustavljena. Poslate komande za zaustavljanje."); } catch (Exception ex) { EventLogger.WriteEventError("Glavna obrada nije uspešno zaustavljena.", ex); } }
public GlavnaObrada(Data.DbContext dbContext) { Dnevnik.Pisi("Inicijalizacija glavne obrade"); // Inicijalizacija liste strana zaglavlja procitaneStraneZaglavlja = new Common.Http.ListaStrana(Properties.Settings.Default.BrojStranaZaglavlja); // Inicijalizacija liste strana oglasa procitaneStraneOglasa = new Common.Http.ListaStrana(Properties.Settings.Default.BrojStranaOglasa); // Inicijalizacija brojaca strane zaglavlja brojacStraneZaglavlja = new Common.Http.Brojac(); // BarijeraZaPisce barijera = new BarijeraZaPisce(pisacZaglavlja.Length); // inicijalizacija pisca zaglavlja for (int i = 0; i < pisacZaglavlja.Length; i++) { pisacZaglavlja[i] = new PisacZaglavlja(ref procitaneStraneZaglavlja, brojacStraneZaglavlja, i, ref barijera); } // inicijalizacija citaca zaglavlja for (int i = 0; i < citacZaglavlja.Length; i++) { citacZaglavlja[i] = new CitacZaglavlja(ref procitaneStraneZaglavlja, ref procitaneStraneOglasa, i, brojacStraneZaglavlja); } // inicijalizacija citaca oglasa for (int i = 0; i < citacOglasa.Length; i++) { citacOglasa[i] = new AdReader(dbContext, ref procitaneStraneOglasa, i); } //EventLogger.WriteEventInfo("Glavna obrada inicijalizovana."); }
public Strana Uzmi() { Strana s = null; lock (lokerListe) { while (Lista.Count == 0) { lock (lokerRadi) { if (!radi) { return(null); } } Dnevnik.PisiSaImenomThreda("Uspavan. Lista je prazna. Elemenata " + Lista.Count + "."); Monitor.Wait(lokerListe); Dnevnik.PisiSaImenomThreda("Probuđen. Lista je bila prazna. Elemenata " + Lista.Count + "."); } s = (Strana)Lista.Dequeue(); switch (Common.Korisno.Korisno.disciplina) { case Common.Korisno.Korisno.Disciplina.dPulse: Dnevnik.PisiSaImenomThreda("Budim sledećeg. Uzeo element. Elemenata " + Lista.Count + "."); Monitor.Pulse(lokerListe); break; case Common.Korisno.Korisno.Disciplina.dPulseAll: Dnevnik.PisiSaImenomThreda("Budim sve. Uzeo element. Elemenata " + Lista.Count + "."); Monitor.PulseAll(lokerListe); break; } return(s); } }
public void Dodaj(Strana strana) { lock (lokerListe) { while (Lista.Count == velicina) // provera da li je lista puna { lock (lokerRadi) { if (!radi) { return; } } Dnevnik.PisiSaImenomThreda("Uspavan. Lista puna. Elemenata " + Lista.Count + "."); Monitor.Wait(lokerListe); Dnevnik.PisiSaImenomThreda("Probuđen. Lista je bila puna. Elemenata " + Lista.Count + "."); } Lista.Enqueue(strana); switch (Common.Korisno.Korisno.disciplina) { case Common.Korisno.Korisno.Disciplina.dPulse: Dnevnik.PisiSaImenomThreda("Budim slecećeg. Dodao element. Elemenata " + Lista.Count + "."); Monitor.Pulse(lokerListe); break; case Common.Korisno.Korisno.Disciplina.dPulseAll: Dnevnik.PisiSaImenomThreda("Budim sve. Dodao element. Elemenata " + Lista.Count + "."); Monitor.PulseAll(lokerListe); break; } } }
protected override void RadiObradu() { while (radi) { Strana strana = procitaneStrane.Uzmi(typeof(StranaZaglavlja).Name); if (strana != null) { List <string> adreseOglasa = strana.DajAdreseOglasa(); if (adreseOglasa != null) { foreach (string adresa in adreseOglasa) { Strana stranaOglasa = new StranaOglasa(adresa); procitaneStraneOglasa.Dodaj(stranaOglasa); if (!radi) { return; } } Dnevnik.PisiSaThredom("Obrađeno je zaglavlje: " + strana.Adresa); } else { Dnevnik.PisiSaThredomGreska("Nije obrađena strana zaglavlja: " + strana.Adresa); } } } }
private void Obrada() { Dnevnik.PisiSaImenomThreda("Obrada pokrenuta."); try { while (radi) { ProcitajZaglavlja(); // malo logovanja string porukaOZavrsetku = String.Format("Thread {0} je završio sa dohvatanjem zaglavlja. Čekam da završe ostali pisci zaglavlja.", Pisac.Name); EventLogger.WriteEventInfo(porukaOZavrsetku); Dnevnik.PisiSaImenomThreda(porukaOZavrsetku); // sinhronizacija na barijeri if (barijera.PisacZaglavljaZavrsio() == 0) { brojacStranaZaglavlja.Ponisti(); } /*if (Common.BrojacPisacaZaglavlja.BrojAktivnihPisacaZaglavlja == 0) * { * brojacStranaZaglavlja.Ponisti(); * }*/ } } catch (Exception ex) { EventLogger.WriteEventError("Greska pri pokretanju obrade zaglavlja", ex); } Dnevnik.PisiSaImenomThreda("Obrada završena."); Dnevnik.Isprazni(); }
private void btnDnevnik_Click(object sender, EventArgs e) { Dnevnik frmDnevnik = new Dnevnik(); this.Hide(); frmDnevnik.ShowDialog(); this.Close(); }
public ActionResult Zabiljeska([Bind(Include = "iddnevnik,zabiljeska")] Dnevnik d) { Dnevnik n = db.dnevnik.Find(d.iddnevnik); n.zabiljeska = d.zabiljeska; db.Entry(n).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Edit")); }
public int sacuvajDnevnikRada(Dnevnik d) { TransferKlasa transfer = new TransferKlasa(); transfer.Operacija = Operacije.sacuvajDnevnikRada; transfer.TransferObjekat = d; formater.Serialize(tok, transfer); transfer = formater.Deserialize(tok) as TransferKlasa; return((int)transfer.Rezultat); }
public int obrisiDnevnik(Dnevnik d) { TransferKlasa transfer = new TransferKlasa(); transfer.Operacija = Operacije.obrisiDnevnik; transfer.TransferObjekat = d; formater.Serialize(tok, transfer); transfer = formater.Deserialize(tok) as TransferKlasa; return(transfer.Broj); }
private void Window_Loaded(object sender, RoutedEventArgs e) { this.Title = r.Ime + " " + r.Prezime; tpPonedeljak.Visibility = Visibility.Hidden; tpUtorak.Visibility = Visibility.Hidden; tpSreda.Visibility = Visibility.Hidden; tpCetvrtak.Visibility = Visibility.Hidden; tpPetak.Visibility = Visibility.Hidden; btnSacuvajDnevnik.Visibility = Visibility.Hidden; d = new Dnevnik(); d.Radnik = r; }
protected override void OnStop() { obrada.Stop(); obrada = null; string poruka = "Servis je zaustavljen."; EventLogger.WriteEventInfo(poruka); Dnevnik.PisiSaImenomThreda(poruka); Dnevnik.Isprazni(); base.OnStop(); }
/// <summary> /// Starter procedura za Thread. Ona poziva proceduru RadiObradu u kojoj se izvrsava petlja obrade. /// </summary> private void Obrada() { Dnevnik.PisiSaImenomThreda("Obrada pokrenuta."); try { RadiObradu(); } catch (Exception ex) { Common.EventLogger.WriteEventError("Greska u RadiObradu().", ex); } Dnevnik.PisiSaThredom("Obrada završena.", true); }
public void DodajDB(Automobil automobil, string threadName) { lock (lokerListeAutomobila) { TimeSpan ts = DateTime.Now.Subtract(vremeSnimanja); if (ts.Minutes > 5 && Lista.Count > 0) { SnimiCSV("c:\\temp\\" + threadName + "_" + DateTime.Now.ToString().Replace(":", "_") + ".csv"); vremeSnimanja = DateTime.Now; Dnevnik.Pisi("Snimljen CSV." + threadName); } Lista.Add(automobil); } }
public void DodajMem(Automobile automobil, string threadName) { lock (lokerListeAutomobila) { Lista.Add(automobil); TimeSpan ts = DateTime.Now.Subtract(vremeSnimanja); if (ts.Minutes >= limitSnimanjeMinuti && Lista.Count >= limitSnimanjeRedovi) { SnimiCSV("c:\\temp\\" + threadName + "_" + DateTime.Now.ToString().Replace(":", "_") + ".csv"); vremeSnimanja = DateTime.Now; Dnevnik.PisiSaImenomThreda("Snimljen CSV."); } } }
public void NeRadi(string koJeZvao) { lock (lokerRadi) { if (radi) { radi = false; lock (lokerListe) { Dnevnik.PisiSaImenomThreda(string.Format("Budim sve! (zaustavljanje-zaglavlja) /{0}/", koJeZvao)); Monitor.PulseAll(lokerListe); } } } }
private void Obrada() { Dnevnik.PisiSaThredom("Obrada pokrenuta."); try { while (radi) { ProcitajZaglavlja(); } } catch (Exception ex) { EventLogger.WriteEventError("Greska pri pokretanju obrade zaglavlja", ex); } Dnevnik.PisiSaThredom("Obrada završena."); Dnevnik.Isprazni(); }
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { Dnevnik dnevnik = dataGrid.SelectedItem as Dnevnik; if (dnevnik == null) { dataGrid.ItemsSource = k.vratiDnevnikeZaSefa(r); } else { tbRadnik.Text = Convert.ToString(dnevnik.Radnik); tbPonedeljak.Text = dnevnik.Ponedeljak; tbUtorak.Text = dnevnik.Utorak; tbSreda.Text = dnevnik.Sreda; tbCetvrtak.Text = dnevnik.Cetvrtak; tbPetak.Text = dnevnik.Petak; } }
public void NeRadi() { lock (lokerRadi) { if (radi) { radi = false; lock (lokerListeStranaZaglavlja) { Dnevnik.PisiSaThredom("Budim sve! (zaustavljanje-zaglavlja)"); Monitor.PulseAll(lokerListeStranaZaglavlja); } lock (lokerListeStranaOglasa) { Dnevnik.PisiSaThredom("Budim sve! (zaustavljanje-oglasi)"); Monitor.PulseAll(lokerListeStranaOglasa); } } } }
protected override void RadiObradu() { AutomobiliDBQueue red = new AutomobiliDBQueue(); while (radi) { Strana strana = procitaneStrane.Uzmi(typeof(StranaOglasa).Name); if (strana != null) { if (strana is StranaOglasa) { try { if (strana.Procitaj()) { Common.Vozilo.Automobil auto = ((StranaOglasa)strana).Automobil; if (auto != null) { autoDB.Snimi(auto); // upis u bazu //autoDB.Snimi2(auto); // upis u bazu //red.Dodaj(auto); Dnevnik.PisiSaThredom("Dodat oglas u bazu: " + auto.ToString()); } } else { Dnevnik.PisiSaThredomGreska("Nisam uspeo da pročitam stranu. URL: " + strana.Adresa); } } catch (Exception ex) { Common.Korisno.Korisno.LogujGresku("Nisam uspeo da dodam automobil u bazu. URL: " + strana.Adresa, ex); } } } } red.Snimi(); }
private void BtnPotvrdiDnevnik_Click(object sender, RoutedEventArgs e) { Dnevnik dnevnik = dataGrid.SelectedItem as Dnevnik; int obrisan = k.obrisiDnevnik(dnevnik); if (obrisan == 0) { MessageBox.Show("Neuspesna potvrda dnevnika!"); return; } else { MessageBox.Show("Uspesno potvrdjen dnevnik!"); } dataGrid.ItemsSource = k.vratiDnevnikeZaSefa(r); tbRadnik.Text = ""; tbPonedeljak.Text = ""; tbUtorak.Text = ""; tbSreda.Text = ""; tbCetvrtak.Text = ""; tbPetak.Text = ""; }
protected override void OnStart(string[] args) { base.OnStart(args); // Da li je ovo potrebno? //pozovi thread obrada = new GlavnaObrada(null); try { string poruka = "Pokrecem servis."; //EventLogger.WriteEventInfo(poruka); Dnevnik.PisiSaImenomThreda(poruka); obrada.Start(); poruka = "Servis je pokrenut.\n" + obrada.ToString(); EventLogger.WriteEventInfo(poruka); Dnevnik.PisiSaImenomThreda(poruka); } catch (Exception ex) { string poruka = "Nisam uspeo da pokrenem servis."; EventLogger.WriteEventError(poruka, ex); Dnevnik.PisiSaThredomGreska(poruka); } }
protected override void RadiObradu() { while (radi) { Strana strana = procitaneStrane.Uzmi(); // base property, strane zaglavlja. //Console.WriteLine(strana.Adresa); // if (strana != null) { List <string> adreseOglasa = strana.DajAdreseOglasa(); if (adreseOglasa != null) { if (adreseOglasa.Count != 0) { foreach (string adresa in adreseOglasa) { Strana stranaOglasa = new StranaOglasa(adresa); procitaneStraneOglasa.Dodaj(stranaOglasa); if (!radi) { return; } } Dnevnik.PisiSaImenomThreda("Obrađeno je zaglavlje: " + strana.Adresa); } else { brojacStranaZaglavlja.Ponisti(); } } else { Dnevnik.PisiSaThredomGreska("Nije obrađena strana zaglavlja: " + strana.Adresa); } } } }
private void ProcitajZaglavlja() { Common.BrojacPisacaZaglavlja.UvecajBrojAktivnihPisacaZaglavlja(); uint i; string adresa; i = brojac.Sledeci(); try { adresa = Zaglavlje(i); Common.Http.Strana strana = new Common.Http.StranaZaglavlja(adresa); while (strana.Procitaj()) { procitaneStrane.Dodaj(strana); // dodaje u deljenu listu u memoriju if (!radi) { return; } i = brojac.Sledeci(); adresa = Zaglavlje(i); strana = new Common.Http.StranaZaglavlja(adresa); } Dnevnik.PisiSaThredom("Više nema zaglavlja za čitanje."); brojac.Ponisti(); // ponistavam brojac da krene iz pocetka } catch (Exception ex) { string porukaGreske = "Citac zaglavlja nije uspesno zavrsio."; EventLogger.WriteEventError(porukaGreske, ex); Dnevnik.PisiSaThredom(porukaGreske); } finally { Common.BrojacPisacaZaglavlja.SmanjiBrojAktivnihPisacaZaglavlja(); } }
public void Start() { Dnevnik.Pisi("Pokretanje threadova."); try { for (int i = 0; i < pisacZaglavlja.Length; i++) { pisacZaglavlja[i].Pokreni(); } for (int i = 0; i < citacZaglavlja.Length; i++) { citacZaglavlja[i].Pokreni(); } for (int i = 0; i < citacOglasa.Length; i++) { citacOglasa[i].Pokreni(); } //EventLogger.WriteEventInfo(string.Format("Glavna obrada pokrenuta. Pokrenuto je \n\t{0} pisaca zaglavlja,\n\t{1} citaca zaglavlja pokusaj\n\t{2} citaca oglasa.\nVerzija .Net je {3}.", pisacZaglavlja.Length, citacZaglavlja.Length, citacOglasa.Length, Environment.Version.ToString())); } catch (Exception ex) { EventLogger.WriteEventError("Glavna obrada nije uspešno pokrenuta.", ex); } }
public void Dodaj(Strana strana) { if (strana is StranaZaglavlja) // ako je strana zaglavlja { lock (lokerListe) { while (Lista.Count == velicina) // provera da li je lista puna { lock (lokerRadi) { if (!radi) { return; } } Dnevnik.PisiSaThredom("Uspavan (dodavanje). Br. el. " + Lista.Count); Monitor.Wait(lokerListe); Dnevnik.PisiSaThredom("Probuđen (dodavanje). Br. el. " + Lista.Count); } Lista.Enqueue(strana); switch (disciplina) { case Disciplina.dPulse: Dnevnik.PisiSaThredom("Budim slecećeg (dodavanje)! Br. el. " + Lista.Count); Monitor.Pulse(lokerListe); break; case Disciplina.dPulseAll: Dnevnik.PisiSaThredom("Budim sve (dodavanje)! Br. el. " + Lista.Count); Monitor.PulseAll(lokerListe); break; } } } else if (strana is StranaOglasa)// ako je Strana oglasa { lock (lokerListeStranaOglasa) { while (Lista.Count == velicina) { lock (lokerRadi) { if (!radi) { return; } } Dnevnik.PisiSaThredom("Uspavan (dodavanje). Br. el. " + Lista.Count); Monitor.Wait(lokerListeStranaOglasa); Dnevnik.PisiSaThredom("Probuđen (dodavanje). Br. el. " + Lista.Count); } Lista.Enqueue(strana); switch (disciplina) { case Disciplina.dPulse: Dnevnik.PisiSaThredom("Budim sledećeg (dodavanje)! Br. el. " + Lista.Count); Monitor.Pulse(lokerListeStranaOglasa); break; case Disciplina.dPulseAll: Dnevnik.PisiSaThredom("Budim sve (dodavanje)! Br. el. " + Lista.Count); Monitor.PulseAll(lokerListeStranaOglasa); break; } } } else // ako je nesto drugo baci exception { throw new Exception("Poslata strana nije ni strana oglasa ni strana zaglavlja."); } }