Hi cả nhà,
E sử dụng detructors của 1 Class như sau
public class A : GridView
{
// Many properties and events up
// Detructors
~A()
{
Dispose();
GC.SuppressFinalize(this);
}
}
Cho e hỏi e sử dụng detructors và GC.SuppressFinalize như vậy có được ko, trong trường hợp đó có giúp tăng tốc được ứng dụng hay không :D
Cám ơn nhiều ạ ^^
Thật ra cách dùng của bạn không có gì sai về mặt lập trình nhưng nó sẽ làm chậm hệ thống. Chúng ta cần nhớ là .net framework sẽ tự động thu gom những object không cần dùng đến nữa để tối ưu hệ thống. Nên code của bạn bị thừa khi gọi GC.SupressFinalize, thêm 1 điều nữa là detructors của object sẽ không làm việc hiệu quả vì GC gọi nó sẽ gọi hàm Dispose trước khi cả destructor nên bạn gọi như vậy là thừa và chỉ làm chậm quá trình GC mà thôi.
Theo quan điểm của tôi bạn chỉ việc kế thừa IDisposable và implement Dispose là đủ. Khi cần bạn gọi GC sẽ thu hồi vùng nhớ cho bạn.
Một cách cụ thể hơn:
class A : IDisposable
{
private void Dispose(bool isDispose)
{
// TODO something else to dispose completly
if (isDispose)
GC.SupressFinalize();
}
public void Dispose()
{
Dispose(true);
}
}