我有一个实现System::ComponentModel::INotifyPropertyChanged
的类,并用作数据源。称之为SourceThing
。假设它有一个名为String
的{{1}}属性。它被绑定到Windows Forms控件,如下所示:
Data
绑定按预期工作。但是,即使包含文本框的窗口被放置(即调用窗口的析构函数,但永远不会销毁SourceThing ^ mySourceThing = gcnew SourceThing();
myTextbox->DataBindings->Add("Text", mySourceThing, "Data");
实例),也永远不会调用SourceThing
析构函数。我可以使析构函数在SourceThing
上运行的唯一方法是在句柄上使用SourceThing
运算符。我宁愿不必保留所有数据源的句柄,因为它们似乎应该在表单被销毁时自动销毁。
应用程序将根据用户操作多次创建和处理此特定表单,并且有大量delete
个实例浮动不理想。为什么在销毁表单时不会调用SourceThing
析构函数?
答案 0 :(得分:0)
我不确定这一点,但我想编译器在C ++ CLI类中定义析构函数时会创建一个Dispose()
方法。
如果是这种情况,则应在表单关闭时调用mySourceThing->Dispose()
。
希望有所帮助