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
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>
>