Was ist der Unterschied zwischen connection.Close () und connection.Dispose ()? [Duplikat]

7

Ich habe festgestellt, dass das Objekt SQLiteConnection in System.Data.SQLite zwei ähnliche Methoden besitzt:

  • Close()
  • Dispose()

Gleiches gilt für das Objekt SQLiteDataReader .

Was ist der Unterschied?

    
Epoc 18.06.2013, 12:26
quelle

2 Antworten

18

Dispose schließt die Verbindung auch, wenn sie nicht geschlossen wurde, aber wenn Sie Close aufrufen, können Sie die Verbindung erneut öffnen. Dies ist nicht möglich, wenn die Verbindung getrennt wird.

Rufen Sie im Allgemeinen Close nicht auf, sondern rufen Sie dispose implizit auf, indem Sie die Erstellung einer Verbindung in einem using -Block einschließen:

%Vor%     
Steven 18.06.2013, 12:28
quelle
5

Connection.Close () schließt einfach die Verbindung zum Server wie in der Verbindungszeichenfolge definiert. Die Verbindung kann nach diesem Punkt verwendet / wieder geöffnet werden.

Connection.Dispose() wird vollständig bereinigt und entfernt alle nicht verwalteten Ressourcen, sodass Connection nicht mehr verwendet werden kann. Sobald die Appliance aufgerufen wurde, sollten Sie nicht mehr versuchen, das Objekt zu verwenden. Innerhalb von Dispose(), Close () 'werden alle mit Sicherheit auch aufgerufen.

Ich würde using empfehlen, die Syntax so wie möglich zu verwenden, um sicherzustellen, dass die Dinge korrekt bereinigt werden:

%Vor%

Dadurch wird automatisch die Verbindung für Sie getrennt, unabhängig von einer ausgelösten Ausnahme.

    
Ian 18.06.2013 12:30
quelle

Tags und Links