Здравствуйте, Sinix, Вы писали:
S>Сбж, он же Be Careful Where You Put GC.SuppressFinalize от Alois Craus.
S>Он же "Как не надо использовать финалайзеры, сложный способ"
public class Event : IDisposable
{
internal IntPtr hGlobal; // allocate some unmanaged memory
public Event()
{
hGlobal = Marshal.AllocHGlobal(500);
}
~Event() // finalizer
{
Dispose();
}
public void Dispose()
{
if( hGlobal != IntPtr.Zero) // check if memory is gone
{
Marshal.FreeHGlobal(hGlobal); // free it
GC.SuppressFinalize(this); // Prevent finalizer from running it again
hGlobal = IntPtr.Zero;
}
}
}
Вызывать из финализатора GC.SuppressFinalize(this) это явный косяк товарища.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>