Autor Beitrag
deusr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 13.04.07 13:46 
Hallo Leute,

zunächst mal der Quelltext:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
    public class Bla
    {
        private static int _counter = 0;

        public virtual int counter
        {
            get { return _counter; }
        }
        
        public Bla()
        {
            _counter++;
        }

        ~Bla()
        {
            _counter--;
        }

    }


Ziel dieser ganzen Aktion ist, dass ich gerne die Anzahl der Instanzen wissen möchte, die aktuell aktiv sind. Wenn eine neue Instanz erstellt wird, wird der Counter richtigerweise erhöht, aber mit dem Löschen funktioniert das leider noch nicht wirklich. Kann mir jemand sagen, wieso?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 13.04.07 17:32 
Was genau klappt denn nicht?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
r2c2
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 324
Erhaltene Danke: 2

Linux

BeitragVerfasst: Fr 13.04.07 17:34 
user profile icondeusr hat folgendes geschrieben:
Wenn eine neue Instanz erstellt wird, wird der Counter richtigerweise erhöht, aber mit dem Löschen funktioniert das leider noch nicht wirklich. Kann mir jemand sagen, wieso?

AFAIK ganz einfach, weil das kein Destruktor ist. Das is n Finalizer und bei sowas kann man eben nicht genau bestimmen, wann der aufgerufen wird. Du zählst im Speicher vorhandene Instanzen, keine Referenzen ==> IDisposable wär IMHO ne Möglichkeit...



mfg

Christian

_________________
Kaum macht man's richtig, schon klappts!
deusr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 13.04.07 17:47 
user profile iconChristian S. hat folgendes geschrieben:
Was genau klappt denn nicht?


_counter--; wird nicht sofort ausgeführt, sondern irgendwann, wenn es mal Lust und Zeit hat.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 13.04.07 18:04 
user profile icondeusr hat folgendes geschrieben:
user profile iconChristian S. hat folgendes geschrieben:
Was genau klappt denn nicht?


_counter--; wird nicht sofort ausgeführt, sondern irgendwann, wenn es mal Lust und Zeit hat.
Japp, das ist richtig so. Siehe das Posting R2C2. Es ist halt nicht genau bekannt, wann ein Desktruktor aufgerufen wird. R2C2 hat auch den Tipp gegeben, wie es gehen kann.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
deusr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 13.04.07 18:06 
user profile iconChristian S. hat folgendes geschrieben:
Japp, das ist richtig so. Siehe das Posting R2C2. Es ist halt nicht genau bekannt, wann ein Desktruktor aufgerufen wird. R2C2 hat auch den Tipp gegeben, wie es gehen kann.


Jaja, ich habs schon verstanden :) Ich werde es mal mit dem Tipp von r2c2 versuchen. Ich wollte nur mal eben auf deine Frage antworten.