Điều gì có nghĩa là connection.Dispose()
trong C#?Điều gì có nghĩa là bởi connection.Dispose() trong C#?
Trả lời
Một lớp thực hiện IDisposable interface chứa một phương thức gọi là Dispose()
, nơi bạn có thể giải phóng tài nguyên hoặc làm điều gì đó khác.
Ngoài ra, tuyên bố using
có thể giúp gọi tự động Dispose()
phương pháp.
using (SqlConnection connection = new SqlConnection(connStr))
{
//do something
}// it will automatically Dispose() here
Điều gì sẽ xảy ra khi bạn gọi myClass.Dispose()
tùy thuộc vào nội dung bạn đã viết theo phương pháp Dispose
. Ví dụ:
public class MyClass : IDisposable
{
//since MyClass implements IDisposable, it must contain a Dispose() method otherwise will compile error
public void Dispose()
{
// do something
}
}
vì vậy nếu bạn muốn biết những gì đã xảy ra khi bạn gọi connection.Dispose()
, bạn phải có một cái nhìn tại các phương pháp Dispose()
của lớp kết nối (có thể đó là một SqlConnection?). Nếu đó là thư viện tích hợp .NET (có nghĩa là bạn không thể lấy mã nguồn dễ dàng), bạn có thể sử dụng công cụ để giúp gọi là Reflector
Nói chung Vứt bỏ được gọi là tài nguyên miễn phí khi bạn sử dụng xong thành phần.
Phương pháp Vứt bỏ trên đối tượng SqlClientConnection sẽ buộc kết nối đóng lại.
Nó là một phổ biến pattern có thể được tìm thấy không chỉ trong. Net nhưng Java nữa.
MSDN nên cung cấp tất cả các tài liệu bạn cần trên cách chính xác để gọi hàm Dispose
vì vậy nó sẽ loại bỏ các nguồn lực từ bộ nhớ? và những gì về connection.Close() – selvaraj
Các đối tượng sẽ ở lại trong bộ nhớ cho đến khi nó đã được thu gom rác –
để theo câu trả lời của bạn Vứt bỏ được gọi là tài nguyên miễn phí khi bạn kết thúc bằng cách sử dụng các thành phần. những gì bạn có nghĩa là bởi các nguồn tài nguyên miễn phí? – selvaraj
conn.Dispose() gọi hàm trong mã không được quản lý.
trong thực tế khi lập trình, bạn không cần gọi hàm này, chỉ cần gọi conn.Close();
Phương thức Vứt bỏ() vĩnh viễn loại bỏ bất kỳ tài nguyên ((un) nào được quản lý) khỏi bộ nhớ để dọn dẹp và tài nguyên không còn tồn tại để xử lý thêm.
Ví dụ: -
void DataTest()
{
using(SqlConnection conn1 = new SqlConnection(...)) {
conn1.Open();
SqlCommand mycommand = new SqlCommand("Select * From someTable", conn1);
using(SqlDataReader myreader = mycommand.ExecuteReader()) {
if(myreader != null)
while(myreader.Read())
Console.WriteLine(myreader.GetValue(0).ToString() + ":" + myreader.GetTypeName(0));
}
mycommand.Dispose();
}
}
- 1. Điều gì: :: có nghĩa là trong C++?
- 2. Điều gì -> có nghĩa là trong C++?
- 3. Cái gì ?? điều hành có nghĩa là trong C#?
- 4. "Điều này [0]" có nghĩa là gì trong C#?
- 5. Shellcode trong C - Điều này có nghĩa là gì?
- 6. Điều gì: = có nghĩa là trong vb.net?
- 7. '&' có nghĩa là gì trong C++?
- 8. "() =>" có nghĩa là gì trong C#?
- 9. "class:" có nghĩa là gì trong C++?
- 10. Có nghĩa là gì trong C++?
- 11. EPS có nghĩa là gì trong C?
- 12. 0u có nghĩa là gì trong C#?
- 13. () => có nghĩa là gì trong C#?
- 14. Điều gì có nghĩa là bởi chế độ ràng buộc trong WebSphere MQ?
- 15. Điều gì có nghĩa là bởi các tập tin và dữ liệu trong MongoDB?
- 16. điều gì có nghĩa là tĩnh mới?
- 17. ** nghĩa là gì trong C
- 18. Điều gì có nghĩa là futex_?
- 19. Điều gì "không thể được so sánh bởi trình so khớp thời gian" nghĩa là gì?
- 20. Làm gì? trong C nghĩa là gì?
- 21. Sự khác nhau giữa connection.Close() và connection.Dispose() là gì?
- 22. Mã C++ này có nghĩa là gì?
- 23. Thread_local có nghĩa là gì trong C++ 11?
- 24. Asterisk * có nghĩa là gì trong Mục tiêu-C?
- 25. Điều gì tạo ra! có nghĩa là trong đường ray?
- 26. Điều này có nghĩa là gì trong lập trình iphone?
- 27. Điều gì => và() => có nghĩa là trong Scala
- 28. Điều gì -> _ => có nghĩa là trong Scala/Lift?
- 29. Có nghĩa là gì?
- 30. Điều này có nghĩa là gì? int i = (i = 20);
điều gì thực sự xảy ra khi chúng ta gọi phương thức dispose()? – selvaraj
@Saj xem chỉnh sửa của tôi. –
Cũng giống như bản chỉnh sửa, sử dụng (SqlConnection connection = new SqlConnection (...)) {} dịch thành thử { SqlConnection sqlConnection = new SqlConnection (...); } cuối cùng { sqlConnection.Dispose(); } –