组件配置一致性

时间:2012-09-21 19:26:12

标签: c# winforms multithreading controls

我有一个继承System.ComponentModel.Component的类。该组件产生一个bacground线程,该线程进行长时间阻塞调用,等待外部事件。在我的Dispose中,线程被发出信号以完成其调用并返回。我可以确定该应用程序将始终调用我的Dispose吗?如何确保我的线程不会延迟并阻止客户端应用程序终止?

2 个答案:

答案 0 :(得分:2)

  

如何确保我的线程不会延迟并阻止客户端应用终止?

将主题设为background thread via Thread.IsBackground。这将使线程不会保持进程活着。

答案 1 :(得分:1)

无法保证在您的对象上调用IDisposable.Dispose。您可以在所有正常情况下调用终结器。

由于Dispose只是惯例,因此不需要您必须通过良好的编码实践来强制执行,并且可能在终结器中运行时间检查(如果需要)。

不阻止应用程序的好方法不是进行长时间的同步调用。大多数API都有异步版本,更容易取消/忽略完成部分。如果你不能 - 使用Thread.IsBackground作为Reed Copsey的建议。

相关问题