我有一个UserControl。该控件启动辅助线程。我已经重写了Dispose()以终止我的辅助线程并且一切正常。
直到....有人忘记在关闭表单时调用MyControl.Dispose()。然后应用程序永远不会关闭,而我的辅助线程会等待一个永远不会到达的关闭信号。
我似乎没有必要包含一个帮助主题,这个主题就像把控件放在表单上一样简单 - 运行你的应用程序 - 然后点击windows关闭按钮。像“你必须打电话给MyControl.Dispose()时使用这个控件!” (当然,没有人会读过)
在我看来,控件应该能够实例化并自动销毁自己,而无需任何其他交互。这在C#中是不可能的吗?有什么方法我不知道我的控制自动知道容器对象已经关闭所以我也应该最终确定?
答案 0 :(得分:1)
归功于Idle_Mind,但我无法将他的评论标记为答案。所以我会回答我自己的问题并给予他信任....
要使用手动线程实现相同的功能,请将Thread的Thread.IsBackground()属性设置为true。现在,当应用程序退出时,线程将自动关闭,就像BackgroundWorker()一样。
答案 1 :(得分:0)
但是c#中有析构函数。 如果你有一个dispose函数,就像这里一样使用它,如果之前没有调用过,那么在析构函数中调用dispose。