Guten Morgen,
mag sein, dass ich resignierend wirkte. Dem ist nicht so. Manchmal fragt man sich nur, wie man den Informationsberg nur verarbeiten soll. Offensichtlich kommt immer mehr drauf, statt runter. Ich hoffe Du verstehst was Ich meine/wie ich das meine.
:IDisposable in Konsolenanwendung.
Da lag ich ja total daneben, mit meiner Meinung, ich könne es nicht erben...der Compiler meckert.
Er meckerte zwar rot unterkringelt, aber nur, da Ich die Schnittstelle noch nicht in Codeform in der Klasse implementierte. Es fehlte lediglich die Methode in meinem Code. mehr nicht... für den Profi trivial, für mich erstmal eine lehrreiche Erfahrung. Fazit: Jetzt klappts.
Was mich noch beschäftig und zugegeben etwas irritiert, ist, das überschrieben der Methode bzw implementieren von IDispose.
Was bewirken folgende Zeilen im Hintergrund?
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
Und bei folgender Schreibweise meine Ich, dass diese ab c#8 implementiert wurde:
if (disposing)
{
_bitmap?.Dispose();
_graphics?.Dispose();
_ni?.Dispose();
_timer?.Dispose();
_cm?.Dispose();
}
Wobei das Fragezeichen, wohl folgender Schreibweise gleichkommt: (am Beispiel _bitmap)
if (disposing)
{
var del = _bitmap
if (del != null)
del.Dispose();
}
Damit soll sichergestellt werden, dass keine NullReferenceExeption aufgrund einer race-condition geworfen wird.
Wie gesagt, soganz steige Ich (noch) nicht dahinter, aber da del und _bitmap Referenztypen sind, scheint mir das aufgrund vorliegender Informationen als logisch(?)
gruß
xor
|