#1 elkche
http://www.nostalcomp.cz/pmi80.php
Příspěvky odeslané z IP adresy 195.113.80.–
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?
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.
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