2

Dang - 10 年的 C# 编程经验,但我仍然无法处理这种语言中没有类似 C++ 的析构函数的事实。99.9% 的情况下这不是问题 - 但现在它让我感到困惑。

我有一个用户控件。该控件启动辅助线程。我已经重写了 Dispose() 以终止我的辅助线程并且一切正常。

直到....有人在关闭表单时忘记调用 MyControl.Dispose()。然后应用程序永远不会关闭,而我的辅助线程会等待一个永远不会到达的关闭信号。

在我看来,必须包含一个简单的帮助主题,比如将我的控件放在您的表单上 - 运行您的应用程序 - 然后单击窗口关闭按钮。类似“使用此控件时,您必须调用 MyControl.Dispose()!” (当然,没有人会读到)

在我看来,控件应该能够被实例化并自动销毁自己而无需任何其他交互。这在 C# 中是不可能的吗?有什么我不知道的方法可以让我的控件自动知道容器对象已经关闭,所以我也应该完成?

4

2 回答 2

1

归功于 Idle_Mind,但我无法将他的评论标记为答案。所以我会回答我自己的问题并给予他信任......

要通过手动线程实现相同的目的,请将 Thread 的 Thread.IsBackground() 属性设置为 true。现在线程将在应用程序退出时自动关闭,就像 BackgroundWorker() 一样。

于 2013-05-23T14:17:07.323 回答
0

但是c#中有析构函数。如果你有一个 dispose 函数,只需像这里一样使用它,如果之前没有调用 dispose,则在析构函数中调用它。

处置

于 2013-05-23T13:56:23.580 回答