类的实例的新线程(C#)

时间:2010-08-29 23:13:49

标签: winforms multithreading c#-3.0

我有一个表单和几个外部类(串行端口,文件访问),由表单实例化。

1)在自己的线程中运行外部类实例的最简单方法是什么?

2)当表单关闭时,实例的线程是否会自动终止?

3 个答案:

答案 0 :(得分:2)

  

1)在自己的线程中运行外部类实例的最简单方法是什么?

类的实例不“运行”。做法。

因此,您可能需要查看APM patternBackgroundWorker类。

  

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

我希望这会对你有所帮助。