Ensimmäiseksi kun olen lähinnä näiden eng kielisten sivustojen varassa, niin pari asiaa on jääny askarruttaa.
Ensimmäinnen on tämä muistin varaaminen ja niiden poistaminen.
Mitkä objektit lähtee automaattisesti ja mitkä pitää tehdä manuaalisesti?
Mulla on nappuloita jotka on tehty new operaattorilla, mihin sitten dynaamisesti liitän kuvia. Mutta missään en poista näitä kuvia? PItäiskö ja missä?
SItten mulla on oma luokka, mikä pitää eräänlaista animaatiota yllä, eli valitun nappulan vieressä sykkii mun Image objekti, tämäkin on tietenkin tehty new:llä, mutta sitäkään en poista. Luokissa ei ole deconstructorii kuten C :ssa.
Ja mitä tapahtuu jos teen aina vaan Image img = Image.FromFile(...);
ja vaikka pictureBox1.Image = img; Eli syökö toi aina vaan lisää muistia?
Pitäiskö tehdä se niin, että
if(pictureBox1.Image != null) pictureBox1.Image.Dispose();
ja sitten vasta laittaa uus image?
Entäs muut Formissa olevat omat new operaattorilla varatut asiat?
Pitäiskö ne ottaa kiinni siinä Form.Close viestissä ja poistaa kaikki varaukset?
Toi on vähä sekavaa, kun osan poistaa itse ja osan se tekee automaattisesti.
-------------------
Toinen on samaan imageen liittyvä asia.
Miten toi Grapich.DrawImage(Image, Point[]));
Oikein toimii? En saa sitä toimimaan halutulla tavalla sitten mitenkään.
Eli mulla on Image otettu tiedostosta, mitä timerin avulla yritän saada rullaamaan kaksi kertaa sekunnissa ja image liikkuu pysty suunnassa 3 pikselii kerrallaan alaspäin ja loput siitä menee ylös niin, että siitä saa sellasen jatkumon. Timer toimii, mutta Image ei rullaa. C :lla saisin ton toimimaan heti.
Olisin erittäin kiitollinen jos joku viittis laittaa vähä esimerkin tosta.
Kiitos,
C# aloittelija
Pari basic kysymystä
2
1050
Vastaukset
C#:ssa kaikki muistin tyhjentäminen on automaattista. Siis jos puhutaan muistista. Se miten ohjelmasi tallentelee juttuja on toinen juttu. Mutta kun varaat muistia, niin kun et tarvitse enää tietoa, niin kielen järjestelmät tyhjentävät muistin.
Muu kysymyksen osio oli jo niin sekavaa, että en pohdi sen sisältöä. Luulisin että teet jonkun asian tuossa väärin, sillä kokemukseni mukaan tuon minkä mainitset tekeminen c on paljon hankalampaa kuin c#:lla. Koska alussa yleensäkin mietit tuota muistin tyhjennystä, kertoo että et ole kovin kokenut c# ohjelmoija - saati kokenut ohjelmoija. Joten paneudu rajapinnan toimintaa c# kautta, älä sotke mukaan c monimutkaisia rakenteita. c# ja c ovat ihan täysin eri asia, vaikka syntaksi vähän on saman tapaista.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1791756
- 108987
- 94874
Koillis motor
Kyllä on mennyt palvelu alas ku lehmänhäntä, sovitut asiat ja luvatut soitot pitää hoitaa eikä tehä oharia, täysin tumpa19683- 51655
ABC: n kahvilan uusi nimi matkimalla
Kahvia ja virvokkeita myytiin aikoinaan ÄKKI-VANNIN KAHVILASSA Haapavedellä ja paikalliset sanoivat sitä haussia "Tuhann41567Kylillä ei ole näkynyt? Missä luuraat nainen?
Olisit soittanut mulle nainen. Oltais voitu nähdä vaikka laavulla. Miksi pelkäät minua? Eihän siinä ole mitään järkeä. m164523Tehdäänkö tänään toiveista totta?
Poikkea tänä illasta siinä lähellä ja annetaan silmien puhua ja sen jälkeen puhu sinä lopulta mitä ajattelet..45508Kauhavan häiriköijistä
Juttua Iltalehdessä. Pakko sanoa että noi nuoret on kyllä ihan pimeitä. Putkin peltoja jupksevat kiusaamaan kun ei tietä24465Rydman sivuutti mutupohjalta asiantuntija-arviot tutkimusrahoitusta myönnettäessä
Onko Rydman sopiva tai kykenevä toimimaan ministerinä? Ei ole. Ministerit ovat joutuneet puhuteltaviksi vähemmästäkin;192464