Laden...

Anzahl der erstellten Benutzer-Objekte der eigenen Anwendung auslesen

Erstellt von Andreas@Tricept vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.536 Views
A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren
Anzahl der erstellten Benutzer-Objekte der eigenen Anwendung auslesen

Hallo gibt es in .Net die Möglichkeit die Anzahl der erstellten Benutzer-Objekte der eigenen Anwendung auszulesen, ohne dabei Administrator-Rechte anzufordern?

3.971 Beiträge seit 2006
vor 13 Jahren

class Foo {
  private static int s_Count;
  public static int Instances { get { return s_Count } }

  public Foo() {
    Interlocked.Increment(s_Count);
  }

  ~Foo() {
    Interlocked.Decrement(s_Count);
  }
}

Zusätzlich Dispose zu implementieren wäre auch nicht schlecht.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren

Ich weiss zwar nicht was du mir damit sagen möchtest, aber was ist denn Interlocked.Increment? hat das einen bestimmten Vorteil?

Meine Frage bezieht sich auf die im Task Manager befindliche Größe "BENUTZER-Objekte" die ich herauslesen möchte...

Ich kann ja nicht jede Klasse auch nicht die aus .Net mit einem Increment/Decrement versehen, da es sowas anscheinend schon im System gibt...

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Andreas@Tricept,

aber was ist denn Interlocked.Increment?

bitte unbekannte Methoden immer selbst in der :rtfm: Doku nachschlagen.

Meine Frage bezieht sich auf die im Task Manager befindliche Größe "BENUTZER-Objekte" die ich herauslesen möchte...

Das Thema wurde schon einige Male besprochen. Bitte benutze die Forumssuche und poste die besten Treffer hier. Vielen Dank!

herbivore

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren

Hab in einem anderem Forum diesen Ausschnitt gefunden:


 private void button1_Click(object sender, EventArgs e)  
        {  
            Console.WriteLine(GetGuiResources(GetCurrentProcess(), GR_USEROBJECTS));  
        }  
 
        [System.Runtime.InteropServices.DllImportAttribute("user32.dll", SetLastError=true)]  
        private static extern uint GetGuiResources(System.IntPtr hProcess, uint uiFlags);  
 
        [System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "GetCurrentProcess")]  
        private static extern System.IntPtr GetCurrentProcess();  
 
        private const int GR_GDIOBJECTS = 0;  
        private const int GR_USEROBJECTS = 1; 

Der hat geholfen!