Tôi đã theo dõi xuống một rò rỉ bộ nhớ và tôi đã thu hẹp nó xuống một ToolTip được phân bổ trong một lớp học có nguồn gốc từ UserControl.Làm thế nào để tự động dọn dẹp ToolTip trong UserControl
Các ToolTip được phân bổ trong phân bổ trong constructor của kiểm soát và khởi tạo trong sự kiện Load như thế này: mẹ
public class CommonProfile : System.Windows.Forms.UserControl
{
private ToolTip toolTip1;
...
public CommonProfile()
{
InitializeComponent();
// Create the ToolTip and associate with the Form container.
toolTip1 = new ToolTip(this.components);
}
private void CommonProfile_Load(object sender, System.EventArgs e)
{
// Set up the delays for the ToolTip.
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
// Force the ToolTip text to be displayed whether or not the form is active.
toolTip1.ShowAlways = true;
// Set up the ToolTip text
toolTip1.SetToolTip(this.btnDeleteEntry, "Delete this Profile");
toolTip1.SetToolTip(this.lblProfileType, "Edit this Profile");
toolTip1.SetToolTip(this.lblProfileData, "Edit this Profile");
toolTip1.SetToolTip(this.picFlagForUpdate, "Toggle Flag for Update");
}
}
của điều khiển có một đời vượt quá tuổi thọ của kiểm soát. Điều khiển này được tạo ra khi đang bay và được thêm vào điều khiển bảng điều khiển và sau đó được loại bỏ khỏi điều khiển của bảng điều khiển.
Tôi thấy rằng thành viên Dispose của điều khiển không được gọi, rõ ràng là do tham chiếu đến ToolTip vẫn còn.
Tôi đã thêm một phương pháp Shutdown như thế này:
public void Shutdown()
{
toolTip1.RemoveAll();
}
Gọi phương thức Shutdown loại bỏ sự rò rỉ và Dispose được cuối cùng gọi.
Thật không may, giải pháp này yêu cầu bất cứ ai sử dụng điều khiển ghi nhớ để gọi phương pháp tắt máy khi họ kết thúc với nó.
Tôi muốn biết nếu có cách nào đó để tôi có thể tự động hóa điều này để nó xảy ra mà không cần phải gọi phương pháp tắt máy một cách rõ ràng.
Tôi đoán bạn cần phải gọi vứt bỏ trên chú giải công cụ hoặc trong việc vứt bỏ điều khiển người dùng của bạn hoặc bạn có thể có chức năng dọn dẹp để thực hiện điều đó cho bạn, như phương pháp shutDown của bạn. – PRR
1. Xem tại đây [http://stackoverflow.com/questions/672980/dispose-on-user-controls-really-meant-to-edit-the-designer-cs-file][1] [1]: http://stackoverflow.com/questions/672980/dispose-on-user-controls-really-meant-to-edit-the-designer-cs-file – VMykyt