简化,我启动了一些后台线程(这是原始方法),当他们完成工作时,他们引发一个事件,在那个事件中他们调用原始方法。
引发事件时,它会在引发它的线程下运行。在我从该事件中调用原始方法之前,我想加入回主线程(或者在原始方法中加入)。从而避免可以创建更多线程的线程。
我想我担心原始线程永远不会被垃圾收集,因为他们调用了更多的线程?情况会是这样吗?以及如何确保线程已完成?
请注意,我确保在任何时候只能运行x个线程。
答案 0 :(得分:2)
线程将是独立的。要在它们之间推动工作,您需要一个基本的同步队列,或类似Control.Invoke方法。
要等到 anothe 线程退出,您可以使用:
otherThreas.Join();
但在很多方面,事件方法更清晰。但是永远都会在另一个线程上,所以你可能需要切换回(例如)如上所述的UI线程。