我在C#中有一个主表单类和一个side-class。我正在创建side-class的实例并从该实例调用该类的方法。该方法启动新线程。现在我正在创建多个实例并为每个实例调用方法。因此,启动了多个线程。现在我已经在side-class中实现了一个方法,以确保在从与线程关联的方法出去时线程被关闭。 我不知道用户是否突然点击主框架窗口的X(关闭)按钮,然后如何处理该边框内的线程。
P.S - 边类的实例在主窗体类的方法中实例化。因此,在处置时,我没有与我有关的情况,所以我可以阻止它们。
答案 0 :(得分:1)
如果通过关闭主窗口来终止应用程序,那么在创建它们时,您可以在工作线程中,在侧类中将IsBackground设置为true。如此:
var newThread = new Thread(DoWork) {IsBackground = true};
newThread.Start();
但是,如果关闭“Main”窗口不是应用程序的末尾,那么Main窗口应该保留一个对实例化的side-class的引用数组。然后它应该在每个侧面实例上设置/设置一个标志以表示线程应该停止(你如何做到这一点取决于你 - 在一个类中定期检查的标志可能是合适的)。此调用应在“主”窗口的OnClose中进行。
答案 1 :(得分:0)
您可以将侧线程设置为BackGroundWorkers,在应用程序结束时关闭 或者在form.Closing事件中调用它们各自的join()方法 这将使应用程序等待,直到线程完成。