C# 中止子窗体C中的线程#

C# 中止子窗体C中的线程#,c#,multithreading,forms,C#,Multithreading,Forms,主窗体将创建另一个窗体,子新窗体将在加载时创建一个线程。 当用户关闭子窗体时,我为关闭的窗体创建事件处理程序以中止其线程 但是,当用户试图关闭主窗体时,如果子窗体的线程仍在运行,则如何中止它用户关闭子窗体或主窗体。将线程的属性设置为True。这将允许它在应用程序退出时自动关闭。将线程的属性设置为True。这将允许它在应用程序退出时自动关闭。NeverAbort()a线程。找到一种方法,让它优雅地退出。(一个简单的标志,一个ManualResetEvent等)在关闭父窗体时,只需触发一个事件来关闭

主窗体将创建另一个窗体,子新窗体将在加载时创建一个线程。 当用户关闭子窗体时,我为关闭的窗体创建事件处理程序以中止其线程


但是,当用户试图关闭主窗体时,如果子窗体的线程仍在运行,则如何中止它用户关闭子窗体或主窗体。

将线程的属性设置为True。这将允许它在应用程序退出时自动关闭。

将线程的属性设置为True。这将允许它在应用程序退出时自动关闭。

Never
Abort()
a线程。找到一种方法,让它优雅地退出。(一个简单的标志,一个
ManualResetEvent
等)在关闭父窗体时,只需触发一个事件来关闭所有子窗体。在事件处理程序中,执行您的操作。@JonathonReinhart为什么不建议中止线程?@Hanaa,因为它会使您的程序处于不一致的状态。请参见永不
Abort()
a线程。找到一种方法,让它优雅地退出。(一个简单的标志,一个
ManualResetEvent
等)在关闭父窗体时,只需触发一个事件来关闭所有子窗体。在事件处理程序中,执行您的操作。@JonathonReinhart为什么不建议中止线程?@Hanaa,因为它会使您的程序处于不一致的状态。看见