"RegistryKey" - OpenSubKey, Destroy einmalig ausreichend?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    "RegistryKey" - OpenSubKey, Destroy einmalig ausreichend?

    Hallo Leute,
    ich glaube zwar das ich schon richtig liege, hätte aber gerne noch eine andere Meinung dazu.

    Ich habe in meiner Form eine Variable vom Typ "RegistryKey" definiert -> ​Private GL_rKey As RegistryKey = Nothing

    Während der Laufzeit des Programms brauche ich diese häufig in verschiedenen Subs, weshalb ich diese eben als globale Form Variable definierte. Beim Closing von Form prüfe ich auf "nicht Nothing" und mache dann ein Dispose und = Nothing.

    Während der Laufzeit in verschiedenen Routinen, verwende ich die Variable dann jeweils mit...

    VB.NET-Quellcode

    1. ​GL_rKey = Registry.CurrentUser.OpenSubKey("Software\~~blablabla~~", True)
    2. If GL_rKey IsNot Nothing Then
    3. ' TODO: tu was gscheits!
    4. GL_rKey.Close()
    5. End If

    Meine Frage, ist so okay und entsteht da kein Speichermüll? - oder wäre es besser immer ein "Using" an jeder Stelle zu verwenden? Ich dachte halt dass es besser ist so, weil ich den Zugriff (Open/Close) sehr häufig anwende (-->> damit die Variable nicht immer neu initialisert werden muss, während der Laufzeit).
    Da entsteht Speicher-Müll.
    Ein RegistryKey, wenn du ihn usest, gehört in einen Using-Block.
    Beachte das Kapselungs-Prinzip der OOP.
    Und ist ja sogar weniger Code, also warum nicht sauber proggen?

    VB.NET-Quellcode

    1. Using rk = Registry.CurrentUser.OpenSubKey("Software\~~blablabla~~", True)
    2. If rk Is Nothing Then Throw New Exception("Software\~~blablabla~~ hamwa nich!")
    3. ' TODO: tu was gscheits!
    4. 'kein Close aufrufen - End Using übernimmt das
    5. End Using


    Mach keine globale Variablen. Es gibt ja bereits einige davon, und mehr sind hier auch nicht nötig, etwa Registry.CurrentUser ist eine dieser glob-Vars (naja, sozusagen, es ist ja eine Readonly Property).