Dang - 10 年的 C# 编程经验,但我仍然无法处理这种语言中没有类似 C++ 的析构函数的事实。99.9% 的情况下这不是问题 - 但现在它让我感到困惑。
我有一个用户控件。该控件启动辅助线程。我已经重写了 Dispose() 以终止我的辅助线程并且一切正常。
直到....有人在关闭表单时忘记调用 MyControl.Dispose()。然后应用程序永远不会关闭,而我的辅助线程会等待一个永远不会到达的关闭信号。
在我看来,必须包含一个简单的帮助主题,比如将我的控件放在您的表单上 - 运行您的应用程序 - 然后单击窗口关闭按钮。类似“使用此控件时,您必须调用 MyControl.Dispose()!” (当然,没有人会读到)
在我看来,控件应该能够被实例化并自动销毁自己而无需任何其他交互。这在 C# 中是不可能的吗?有什么我不知道的方法可以让我的控件自动知道容器对象已经关闭,所以我也应该完成?