Laden...

Eigenschaft Null und beim Zugriff auf einmal initialisiert

Erstellt von Schaffi vor 11 Jahren Letzter Beitrag vor 11 Jahren 936 Views
S
Schaffi Themenstarter:in
9 Beiträge seit 2008
vor 11 Jahren
Eigenschaft Null und beim Zugriff auf einmal initialisiert

Nabend...

irgendwie weiß ich gerade nicht mehr weiter ?( ?( ?(

Hier mein Code


public class DataProvider
    {
        private static FbConnection _connection = null;
        protected static FbConnection Connection
        {
            get
            {
                if (_connection == null)
                {
                    if (File.Exists(DatabaseFilePath) == false)
                    {
                        // create database
                        FbConnection.CreateDatabase(App.ConnectionString);

                        var command = NewCommand();
                        
                        command.CommandText = CREATE_TABLE_BELEGE;
                        command.ExecuteNonQuery();

                        command.CommandText = CREATE_GENERATOR_BELEGE;
                        command.ExecuteNonQuery();

                        command.CommandText = CREATE_TRIGGER_BELEGE;
                        command.ExecuteNonQuery();

                        return _connection;
                    }

                    _connection = new FbConnection(App.ConnectionString);
                    _connection.Open();
                }
                return _connection;
            }
        }
    }

Es geht um die Variable "_connection".
Wenn ich jetzt im Debug-Modus schaue ist _connection NULL . Sobald ich jetzt auf die die Eigenschaft Connection zugreife und ein Debug-Point bei "if (_connection == null)" setze, ist aufeinmal die Variable _connection nicht mehr NULL, sondern initialisiert.

Kann mir jemand hier weiterhelfen? Ich kann mir das absolut nicht erklären!.

Mfg Schaffi

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

Bist Du sicher dass Du den ersten Aufruf debuggst?
Es kann auch sein, dass der Debugger den Getter bereits aufruft, um den Wert der Property anzuzeigen. Dadurch kann sie dann initialisiert werden, bevor Dein Breakpoint erreicht wird.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

16.842 Beiträge seit 2008
vor 11 Jahren

Vielleicht mehrere Threads?
Connections zu teilen ist nicht so eine gute Idee.

4.221 Beiträge seit 2005
vor 11 Jahren

Hast Du allenfalls im Watch-Fenster auch DataProvider.Connection drin ?

Falls ja, dann holt VS den Wert (ohne im Defucker anzuhalten)

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
Schaffi Themenstarter:in
9 Beiträge seit 2008
vor 11 Jahren

Ich habs, lag am protected. Wenn ich ein public statt protected setze funktioniert alles wie es sein soll.

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo Schaffi,

die eigentliche Ursache muss aber wo anders liegen und diese sollte gefunden und behoben werden. Hast du die Hinweise in diesem Thema alle befolgt bzw. kannst du diese ausschließen?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"