Tema: Re: Visual studio 5 ir modaline forma
Autorius: Valdas
Data: 2010-10-28 10:07:47
Pasibandziau visus budus, ir ziurint per taskmanager`i rezultatai keisti, 
nesvarbu kaip uzdarineju, naudojamos atminties nesumazeja, o kelis kartus 
atidarius ir vel uzdarius su kiekvienu kartu naudojamos atminteis kiekis 
auga, kokia tai mistika...

"Valdas" <valdonas@super.lt> wrote in message 
news:iaav8b$e3s$1@trimpas.omnitel.net...
> Na taip, o vat kaip uzdarineti, kuriuo budu geriau ?
> Dim OpenFileDialog as new Form2
> -------------------------------------
> Form2.close
> OpenFileDialog.close
> Me.Close
>
> ?
>
> "Jornada Del Muerto" <Jornada@Lythum.lt> wrote in message 
> news:ia99tp$dch$1@trimpas.omnitel.net...
>>    Jei labai jauciasi ant greiciu tai gali tada gal ir laikyt atmintyj, 
>> kad ir toje pacioje klaseje sukurt statini memberi saugot tos klases 
>> objektui ir 1 statine startavimo funkcija. paprastai statines statinio 
>> kintamojo tikrai nenaikins GC, bet cia galima sakyt atbulas anam 
>> variantui variantas :)  pvz:
>>
>> public class ManoKlase {
>>
>>    static ManoKlase _Objektas = null; // c# jeigu nenurodomas access 
>> modyfer (t.y. public, private, protected, internal ir pan.) tai pagal 
>> nutylejima tai buna private
>>
>>    /* Statinis start metodas toje pacioje klaseje inicializuojantis 
>> klases objekta - tavo atveju forma su tam tikrais parametrais */
>>
>>    public static [returnType] Start (...parametrai...) {    // 
>> [returnType] jeigu reikia cia aprasai duomenu tipa koki grazinti, 
>> dialogam as paprastai dedu bool - priklausomai ar paspausta 
>> YES|OK/NO|Cancel
>>
>>        // jeigu ner objekto
>>        if(_Objektas == null ) {
>>            // sukuriu objekta
>>            _Objektas = new _Objektas(...parametrai...);
>>        }
>>        // objektas yra
>>        else {
>>            // priskiriame parametrus jau esamam objektui, jie galbut 
>> pasikeite
>>            _Objektas.Memberis = ...parametrai...
>>        }
>>
>>        // cia vyks modalinio dialogoo rodymas
>>        // Paimu true arba false priklausomai ar paspausta OK ar ne
>>        IF   _Objektas.ShowDialog() == DialogResult.OK THEN
>>            ' Paspausta OK
>>            return _Objektas.[FilePath];    // daleiskim musu returnType 
>> yra string, jeigu grazinama null reiskia nebuvo spausta ok, jeigu tekstas 
>> reiskia tai failas/katalogas
>>
>>                        ' cia gali dar tikrinti ar realiai egzistuoja 
>> failas
>>            FileInfo file = new FileInfo(_Objektas.Path);
>>            if file.Exist then.....
>>
>>            ' taip pat jeigu tai direktorija tai:
>>            DirectoryInfo dir = new DirectoryInfo(_Objektas.Path);
>>            if dir.exist .... (jei gerai pamenu)
>>
>>            ' Nors visumoje file dialogas validuoja pats
>>
>>
>>
>>        Else
>>            return Null;    // VB kiek pamenu tai butu Start = Null vat 
>> del VB.net pamirses ;)
>>
>>        END IF
>>
>>
>>    } /* end of  Start  */
>>
>>    /* Toliau klases visi kiti memberiai */
>> }
>>
>>    Visumoje isorinis kvietimas atrodytu tada taip:
>>
>>    Dim path AS String = ManoKlase.Start(...parametrai...)
>>
>>    if Not String.IsNullOrEmpty(path) then
>>
>>        ' kazka atidarinejam
>>
>>        ....fileOpen(path)...
>>
>>    endif
>>
>>
>>
>> "Valdas" <valdonas@super.lt> wrote in message 
>> news:ia8be4$4fg$1@trimpas.omnitel.net...
>>> na as parametra path ir filtra laikau globaliai, kiek jau ten jie tos 
>>> vietos
>>> uzima, o pacios formos turinys generuojamas kekviena karta ja 
>>> paleidziant.
>>> Dar vat idomu kokiu komponentu nenaudoti kad forma greiciau pasileistu ?
>>>
>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message
>>> news:ia6tuq$vvm$1@trimpas.omnitel.net...
>>>>    Tai taip ir yra daryti geriausia, o jeigu tu ja nori saugotis 
>>>> atmintyje
>>>> del to kad nepamirst paskutinio vartotojo nurodyto kelio ar kazkokios
>>>> tokios informacijos, geriau pasidaryk nustatymu klasyte ar struktura 
>>>> kuria
>>>> naudotu jis, pvz:
>>>>
>>>> // rasau c# taip greiciau man, bet cia elementari klasyte
>>>> public class MyDialogSettings {
>>>>    public string Path;
>>>>    public string SelectedExtensions;
>>>>    public string LastFile;
>>>>
>>>>    public MyDialogSettings(string path) {
>>>>        // Jeigu path tuscias ar lygus null tai nukreips i MyDocuments,
>>>> kitu atveju naudos path
>>>>        Path = (String.IsNullOrEmpty( path ?
>>>> Environment.SpecialFolder.MyDocuments : path);
>>>>    }
>>>>
>>>>    ir t.t...
>>>> }
>>>>
>>>> Ir tada sios klases objekta saugai kur nors savo klaseje kuri naudoja
>>>> dialoga, kadangi .NET dirba reference'ais tai i klase bus paduodamas ne
>>>> objektas o tik nuoroda i ji:
>>>>
>>>> MyDialogSettings FileOpenSettings = new MyDialogSettings(null); //
>>>> inicializuojam my documents keliu
>>>>
>>>> ManoDialogas d = new ManoDialogas(Me.FileOpenSettings);
>>>> d.ShowDialog();
>>>>
>>>> Viska ka darys iskvietus d.ShowDialog tavo klase su settingu objektu ja
>>>> sunaikinus liks FileOpenSettings klases memberyje, tada kita kart
>>>> inicializuojant nauja dialoga paduodi tapati FileOpenSettings ir tavo
>>>> klase naudoja juos vel, taip islaikant visa pries tai buvusio dialogo
>>>> stovi.
>>>>
>>>> Bent jau galima taip daryti, tada nesaugosi ko nereikia o tik ko reikia
>>>> atmintyje.
>>>>
>>>>
>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>> news:ia5mo5$3qb$1@trimpas.omnitel.net...
>>>>> na vienok tas variantas :
>>>>> Dim FileDialog as new Form2
>>>>> FileDialog.Showdialog()
>>>>>
>>>>> padejo, aciu, galima tema uzdarinet :)
>>>>>
>>>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message
>>>>> news:ia470e$thv$1@trimpas.omnitel.net...
>>>>>> GC.[spausk tada ctrl+space] :))
>>>>>>
>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>> news:ia35n5$bs4$1@trimpas.omnitel.net...
>>>>>>> Na o tai kaip mano atveju (Visual Studio 5, Visual Basic), 
>>>>>>> prisibrauti
>>>>>>> prie
>>>>>>> to GC (Garbage Collector) ?
>>>>>>>
>>>>>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message
>>>>>>> news:i9s1h6$n88$1@trimpas.omnitel.net...
>>>>>>>> Instance tai kazkokio tipo sukurtas objektas, pvz.: DataTable yra
>>>>>>>> tipas,
>>>>>>>> tipas gali buti klase, struktura, ar primityvus tipas pvz int ir 
>>>>>>>> t.t..
>>>>>>>> tai
>>>>>>>> yra tipas, o sio tipo sukurtas objektas yra to tipo object 
>>>>>>>> instance,
>>>>>>>> arba
>>>>>>>> tiesiog to tipo instance, pvz.:
>>>>>>>>
>>>>>>>> Daleiskim tu susikurei savo open file dialog klase, ja uzvadinai
>>>>>>>> "ManoFileOpenDialogas" <- kitaip sakant sukurei 
>>>>>>>> ManoFileOpenDialogas
>>>>>>>> tipa.
>>>>>>>>
>>>>>>>> ' Deklaruojam
>>>>>>>> Dim a As ManoFileOpenDialogas ' nurodai kad kintamasis a bus
>>>>>>>> ManoFileOpenDialogas tipo
>>>>>>>>
>>>>>>>> ' kintamajame a sukuriu (kiti dar vadina inicializuoju)
>>>>>>>> ManoFileOpenDialogas tipo object instance
>>>>>>>> a = new ManoFileOpenDialogas ' va a ir bus instance (dar kiti 
>>>>>>>> vadintu
>>>>>>>> objektu, zodziu kaip nepavadinsi taip nepagadinsi)
>>>>>>>>
>>>>>>>>    Siaip terminologijos ipac tokios bazines OOP vertetu 
>>>>>>>> pasimokinti,
>>>>>>>> ok
>>>>>>>> toliaujam keliau :)  tau ka is esmes norejo pasakyti zmones, kad 
>>>>>>>> .NET
>>>>>>>> yra
>>>>>>>> toks dalykas kaip GC (Garbage Collector) grubiai vertus, siuksliu
>>>>>>>> rinkejas, pvz. kokiam nors C++ viska alokuota rankiniu budu atminti
>>>>>>>> skirta
>>>>>>>> kazkokiam programos darbui, po to reikedavo nepamirsti 
>>>>>>>> atlaisvinti -
>>>>>>>> kitaip ji uzimdavo ir toliau vieta ir su laiku prisikaupdavo tos
>>>>>>>> rezervuotos/alokuotos atminties daug, nuo ko galedavo luzti 
>>>>>>>> programa,
>>>>>>>> .net
>>>>>>>> atvejais tam buna ivairus metodai dispose ir pan.. Bet .NET daugeli
>>>>>>>> tokiu
>>>>>>>> objektu pasalina pats GC pagalba, del to greiciausia su tavuoju
>>>>>>>> objektu
>>>>>>>> taspats atsitinka, tiesiog reik suprasti kokiom aplinkybem .net 
>>>>>>>> pats
>>>>>>>> juos
>>>>>>>> naikina.
>>>>>>>>
>>>>>>>>    Visumoje .net automatu, kaip jau ir minejau naikina objektus 
>>>>>>>> kurie
>>>>>>>> niekur nera saugomi ar isiminti, pvz kazkokiam kintamajame ir
>>>>>>>> panasiai,
>>>>>>>> pvz. turime funkcija:
>>>>>>>>
>>>>>>>> Public Sub ManoFunkcija
>>>>>>>>
>>>>>>>>    Dim a As ManoFileOpenDialogas '
>>>>>>>>    a = new ManoFileOpenDialogas
>>>>>>>>
>>>>>>>>    ' dirbi su a
>>>>>>>>    a.DoModal() ' ir t.t...
>>>>>>>>
>>>>>>>> End Sub
>>>>>>>>
>>>>>>>>    Isejus is sios funkcijos a bus automatiskai naikinamas, bet 
>>>>>>>> sekanti
>>>>>>>> karta iskvietus sia funkcija (tiksliau metoda) objektas sukuriamas 
>>>>>>>> bus
>>>>>>>> is
>>>>>>>> naujo, taip va ir turetu buti daroma, paprastai atmintyje niekas
>>>>>>>> nelaiko
>>>>>>>> inicializuotu OpenFileDialog'u, aplamai kuo maziau laikysi tokio
>>>>>>>> nereikalingo saugoti slamsto tuo tavo programa maziau resursu 
>>>>>>>> valgys,
>>>>>>>> o
>>>>>>>> jeigu nori ji saugotis del to kad naudosi labai daznai (nebent) tai
>>>>>>>> saugokis toje klaseje kuri su juo dirbs, tada butu kazkas tokio:
>>>>>>>>
>>>>>>>> ' Klases, bet ne metodo/funkcijos zonoje deklaruotas kintamasis
>>>>>>>> public OpenFile As ManoFileOpenDialogas = Null ' Nepamenu gerai 
>>>>>>>> VB.NET
>>>>>>>> sintakses, paskutini kart reikejo pries 5 metus
>>>>>>>>
>>>>>>>> Public Sub ManoFunkcija
>>>>>>>>
>>>>>>>>    If Me.OpenFile = Null Then ' rodos VB kitaip tikrinasi ar 
>>>>>>>> objektas
>>>>>>>> null
>>>>>>>>        Me.OpenFile = new ManoFileOpenDialogas
>>>>>>>>    End If
>>>>>>>>
>>>>>>>>    ' kreipiesi i savo dialoga
>>>>>>>>    Me.DoModal() ' ir t.t...
>>>>>>>>
>>>>>>>> End Sub
>>>>>>>>
>>>>>>>> Tada 1 karta bus sukuriamas dialogas ir veliau pernaudojamas ji
>>>>>>>> nekuriant
>>>>>>>> dar karta, tuo paciu jis saugomas bus klaseje kuri ji naudoja, 
>>>>>>>> siaip
>>>>>>>> tai
>>>>>>>> geriausia savo kodo parasytum, tai tada butu aiskiau kas negerai, 
>>>>>>>> gal
>>>>>>>> beda
>>>>>>>> visai kitur.
>>>>>>>>
>>>>>>>>
>>>>>>>> Freelancer Developer [R&D]
>>>>>>>> http://www.lythum.lt
>>>>>>>>
>>>>>>>> Naujausias research:
>>>>>>>> http://wiki.lythum.lt/index.php?title=Facebook_integrafimo_galimyb%C4%97s
>>>>>>>>
>>>>>>>>
>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>>>> news:i9rr3e$cre$1@trimpas.omnitel.net...
>>>>>>>>> na as kazko nesuprantu, siaip as ant Visual Basic darau, tai kas 
>>>>>>>>> tas
>>>>>>>>> instance nezinau :((
>>>>>>>>>
>>>>>>>>> "Andrius F" <andriusflMORESPAM@gmail.com> wrote in message
>>>>>>>>> news:i9rq8p$bic$1@trimpas.omnitel.net...
>>>>>>>>>> kiekviena karta pries ShowDialog() kurk nauja instance..
>>>>>>>>>> using(var form = new SomeForm())
>>>>>>>>>> {
>>>>>>>>>>    if(form.ShowDialog(this) == DialogResult.Ok)
>>>>>>>>>>    {
>>>>>>>>>>        ...
>>>>>>>>>>    }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>>>>>> news:i9rf9u$qk9$1@trimpas.omnitel.net...
>>>>>>>>>>> ka reiskia nereusint instance, tai kaip tada naudotis tuo
>>>>>>>>>>> ShowDialog
>>>>>>>>>>> ?
>>>>>>>>>>> man reikalingas tas modaliskumas, nes darau savo open file 
>>>>>>>>>>> dialoga,
>>>>>>>>>>> ir
>>>>>>>>>>> kai uzdarau forma, tik tuomet gaunu reiksme...
>>>>>>>>>>>
>>>>>>>>>>> "fakeID" <fakeID@fakeHost.com> wrote in message
>>>>>>>>>>> news:i9rcss$n3d$1@trimpas.omnitel.net...
>>>>>>>>>>>> Nereiktu reusinti formos instance, nebent tau tikrai taip 
>>>>>>>>>>>> reikia
>>>>>>>>>>>> (pvz
>>>>>>>>>>>> forma kuriasi 15 sek, bet tada turbut kazkas blogai su tavo 
>>>>>>>>>>>> forma
>>>>>>>>>>>> ;)..
>>>>>>>>>>>> Blogiausiu atveju isitikink, kad GarbageCollector nesunaikins 
>>>>>>>>>>>> tavo
>>>>>>>>>>>> formos:
>>>>>>>>>>>>    a. ikisk instance i static field
>>>>>>>>>>>>    b. galbut verta overridint close, ir hidint forma vietoj
>>>>>>>>>>>> base.close()
>>>>>>>>>>>>
>>>>>>>>>>>> bet siaip - nereusink instance. tai bloga architektura
>>>>>>>>>>>>
>>>>>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>>>>>>>> news:i9r6gd$er1$1@trimpas.omnitel.net...
>>>>>>>>>>>>> Sveiki, iskilo tokia beda, bandant is vienos formos atidaryti
>>>>>>>>>>>>> kita
>>>>>>>>>>>>> "Forrm2.ShowDialog()", pradzioje atidaro, bet programai 
>>>>>>>>>>>>> padirbus
>>>>>>>>>>>>> kokia
>>>>>>>>>>>>> valanda ir vel bandant atidaryti, meta klaida
>>>>>>>>>>>>> "ObjectDisposedException", gal nujauciat kur cia beda ?
>>>>>>>>>>>>>
>>>>>>>>>>>>> aciu
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>
>