2012-06-11 19 views
5

Uzun süre çalışan bir SQL sorgusundan veri almak için eşzamansız bir işlem kullanıyorum. İşlem saklı yordamı SqlCommand.BeginExecuteReader() yöntemiyle çağırır.ADO.NET'ten uzun süre çalışan SQL Server sorgusunu son derece başarılı bir şekilde sonlandır

Zaman zaman, süreçlerimi kapatmak ve çalışan sorguları incelikle kapatmak istiyorum. Bazı testlerden sonra, SqlConnection.Close() numaralı telefonun aranması yeterli gibi görünmektedir. İyi bir ölçü için, ben de açıkça SqlConnection.Dispose()'u arıyorum. Sorgu incelikle sona sanki ben Close() çağırdıktan sonra bir SQL:BatchCompleted ardından SQL:BatchStarting gördüğünüz gibi

Profiler SQL Server üzerinden bir iz çalışan, öyle görünüyor.

Bağlantıyı kapatmanın gerekli olup olmadığını herhangi bir kişi onaylayabilir mi? Her şeyden

Önce nihayet içerdeki Kapatma yöntemleri doğru istisna durumları sağlamak için blok yazma emin olun:

cevap

2

çağrılması Yakın sadece birkaç sözler, yeterlidir.

Ayrıca, SqlConnection.Close ve SqlConnection.Dispose yöntemlerini de her ikisini de aynı şekilde yapmaları gerekmez. Atılabilir yöntem, tanımlanabilir desen uygulamak için eklenir ve bu yöntem, daha doğal adı olan SqlConnection.Close yöntemini dahili olarak çağırır, çünkü bağlantıları kapatırız, ancak bunları imha etmeyiz :)

DataReader'ı kullanıyorsanız, bunu kapatmanız gerekir. başka bir amaç için bağlantı kullanmak istediğinizde her seferinde de.

İlgili konular