我有一个表单和几个外部类(串行端口,文件访问),由表单实例化。
1)在自己的线程中运行外部类实例的最简单方法是什么?
2)当表单关闭时,实例的线程是否会自动终止?
答案 0 :(得分:2)
1)在自己的线程中运行外部类实例的最简单方法是什么?
类的实例不“运行”。做法。
因此,您可能需要查看APM pattern和BackgroundWorker类。
2)当表单关闭时,实例的线程是否会自动终止?
这取决于线程的启动方式。线程可以是background thread或前台线程 - 后者阻止应用程序终止。
答案 1 :(得分:1)
如果只是想要异步调用几行代码,可能最好的方法是ThreadPool.QueueUserWorkItem。请参阅:What's the difference between QueueUserWorkItem() and BeginInvoke(), for performing an asynchronous activity with no return types needed
答案 2 :(得分:0)
查看您是否正在使用托管环境,当实例化对象时,如果它超出范围,它将自动处理掉。处置实际上由垃圾收集处理。
如果您使用的是UnManaged对象,则在使对象超出范围之前,您有责任关闭资源。
垃圾收集会定期打开并开始收集超出范围的所有对象。如果您需要处理大型对象,可以尝试使用WeakReference类来保存对象,但也将其暴露给垃圾收集。
从这里阅读WeakReference和垃圾收集: http://www.abhisheksur.com/2010/07/garbage-collection-algorithm-with-use.html
我希望这会对你有所帮助。