Többpéldányos teljesítményszámláló probléma (C#)

0 votes
asked Apr 27, 2014 in IRF tantárgy by csa (45 points)  

Sziasztok!

3F feladatom van, Objektum kezelő osztályban szeretném nézni, hogy hány objektum van adott pillanatban.

Ha 1 példányos a számlálóm szépen mutatja, hogy futás közben felmegy 1-re, aztán le 0-ra.

Többpéldányos esetben a példány nevet időponttal egészítem ki, 0. kérdés, hogy ez jó megoldás-e?

A gondom pedig az, hogy ilyenkor az egyik példány értéke nő meg, viszont az nem csökken, hanem úgy marad a program bezárása után is.
Helyette egy másik példányé csökken, az pedig 0-ról "végtelenbe" kerül.

Gondolom több helyen is példányosítva van az osztály és máshol történik a létrehozás, mint a törlés. Így viszont a többpéldányosság értelmezhetetlenné teszi az adatokat.
Van erre valami megoldás?

Köszi!

1 Answer

0 votes
answered Apr 27, 2014 by davidhonfi (371 points)  
  • A példánynévnek célszerűnek és megkülönböztethetőnek kell lennie, így az időpont is jó megoldás lehet.
  • Ha a program bezárása után úgy marad a teljesítményszámláló, akkor az azt jelenti, hogy nem szabadítod fel, ami ilyen problémához is vezethet. (felügyeletre tervezés gyakorlat, 26. oldal).
  • Ha ez nem oldja meg a gondot, érdemes megnézni, hogy pl. a session név megfelelően átadásra kerül-e a teljesítményszámlálók módosításakor a kódban.
commented Apr 27, 2014 by csa (45 points)  
A felszabadítás jogos.

A lényegi gond viszont még mindig az, hogy így a session-ök objektum példányonként különülnek el, nem pedig program példányonként. Ezért nem vagyok biztos benne, hogy az időpont hozzáadása jó megoldás. Viszont a konstruktort meg nem írnám át lehetőleg (példában ott kapta meg a session-t).
commented Apr 27, 2014 by davidhonfi (371 points)  
Így már érthető, hogy mi a gond! Nyugodtan átírhatod a konstruktort, hiszen azzal is tudod azt biztosítani, hogy a két külön futó példány másik session-be kerüljön.

A kódot lehet módosítani instrumentáció bevezetésére is, a lényeg, hogy a beadásnál látszódjon a diff-ben, hogy hol módosítottál és legyen kommentelve, hogy mi volt a módosítás oka.
...