Anonymní profil rudla – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil rudla – Programujte.comAnonymní profil rudla – Programujte.com

 

Příspěvky odeslané z IP adresy 195.113.80.–

rudla
Assembler › PMI-80
22. 7. 2011   #144865

#1 elkche
http://www.nostalcomp.cz/pmi80.php

Jindra
.NET › Dispose a Finalize
20. 5. 2009   #101502

To rudolf_franek :

Diky za odpovedi.

Takze kdyz tam ten boolovskej parametr nedam a uvolnim vzdycky vsechno, tak je to OK. Jen tim da se rict usnadnim praci GC, kterej to pak nebude muset dohledavat jako nepouzivany resources a rusit nasledne. Je to tak?


Jindra
.NET › Dispose a Finalize
15. 5. 2009   #101249

Diky za reakce.

Me slo predevsim o to, aby ten objekt byl za vsech okolnosti spravne odstranen z pameti. To, ze to nevo loguje do souboru neni az tak podstatne. Spis to beru jako nejakou kostru, jak dobre udelat finalize a dispoze.

Na tom prvnim http://msdn.microsoft.com/en-us/library/fs2xkftw.aspx od rudolf_franek je to prave delany trochu jinak.

Jednak je pouzita promenna _disposed. je to nutny? Mohlo by se stat, ze se to bude disposovat dvakrat a hodi to nejakou chybu?

Test na nenullovost u me urcite chybi.


Dalsi dotaz z druheho linku:



public class DisposableClass : IDisposable
{
~DisposableClass()
{
Dispose(false);
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// Clean up all managed resources
}

// Clean up all native resources
}
}


PREDEVSIM:co jsou managed a native resources? A proc se pri dispose odstanuji oboje a u finalizace jen native?


Predem dik.

Jindra
.NET › Dispose a Finalize
13. 5. 2009   #101050

Zdravim,

jsem celkem novy v ASP.NET, tak prosim o jednu radu.

Vytvarim zkusebni tridu na zapis do log souboru. Rad bych ji udelal se vsim vsudy, takze i Dispose a Finalize metody. Je tento kod v poradku, nebo je neco zbytecne navic / neco chybi ke spravnemu vytvoreni a zniceni tridy.



class LogIt: IDisposable
{
FileStream fsLog;
StreamWriter swLog;

public LogIt(string logFile)
{
fsLog = new FileStream(logFile, FileMode.Append);
swLog = new StreamWriter(fsLog);
}

public void Dispose()
{
swLog.Close();
swLog.Dispose();
swLog = null;

fsLog.Dispose();
fsLog = null;

GC.SuppressFinalize(this);
}


~LogIt()
{
this.Dispose();
}


}


Potom nekde v kodu se bude volat neco jako toto:



using (LogIt myLog = new LogIt("LogIt.txt"))
{
necoDelej();
}


Dekuji za vsechny rady,

Jindra

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý