Khi sử dụng SqlConnection, điều quan trọng là phải luôn đóng nó khi được sử dụng - hoặc bằng .Close() hoặc đặt SqlConnection trong "đang sử dụng". Thật không may, mọi người, kể cả bản thân tôi, có xu hướng quên điều đó và đây là nơi những người thu gom rác cứu tôi trong một thời gian cho đến khi tôi quên đóng kết nối quá nhiều lần hoặc số người sử dụng ứng dụng tăng lên.Phát hiện xem bộ thu gom rác đã được gọi (.Net)
Tôi muốn biết, nếu có thể, làm cách nào để phát hiện xem bộ thu gom rác có xử lý SqlConnection hay không bởi vì nó cho rằng nó không được sử dụng nữa hoặc nếu SqlConnection đã đóng đúng cách.
Một cách khác có thể kế thừa SqlConnection và đặt bộ đếm thời gian trên bộ khởi tạo của nó và kiểm tra xem mất bao lâu để ngắt kết nối khi loại bỏ lớp. Tôi không thực sự thích hẹn giờ nhưng ý tưởng chỉ xuất hiện khi viết điều này.
Có thể có cách thứ ba và thậm chí thông minh hơn cho tất cả điều này ... Bạn sẽ đề xuất điều gì?
'bằng cách .Close() hoặc đặt SqlConnection trong một "sử dụng" '** NO NO NO! ** .Close() là _not_ đủ tốt bởi chính nó. Đó là toàn bộ điểm của cấu trúc 'using': quá nhiều người cũng quên rằng bạn .Close() _must_ nằm trong một khối cuối cùng. –