C# 检测线程何时关闭

C# 检测线程何时关闭,c#,C#,在我的C应用程序中,我有一个单独的窗口,其中包含一个在单独线程中运行的进度条。它每30秒从服务器发送一个数据请求,并相应地填充进度条 问题是,当我关闭主程序时,带有进度条的第二个窗口保持打开状态 如何编程第二个线程以检测第一个线程何时关闭,并相应地关闭自身?您可以从第一个窗口使用Window\u closed事件: private void Window1_Closed(object sender, EventArgs e) { Window2.Close(); // Close you

在我的C应用程序中,我有一个单独的窗口,其中包含一个在单独线程中运行的进度条。它每30秒从服务器发送一个数据请求,并相应地填充进度条

问题是,当我关闭主程序时,带有进度条的第二个窗口保持打开状态


如何编程第二个线程以检测第一个线程何时关闭,并相应地关闭自身?

您可以从第一个窗口使用Window\u closed事件:

private void Window1_Closed(object sender, EventArgs e)
{
    Window2.Close(); // Close your second window
}
然后在第二个窗口中:

private void Window2_Closed(object sender, EventArgs e)
{
    // abort all Threads
    thread.Abort();
}

使工作线程成为背景线程。

不建议从父线程关闭子线程,因为
很可能会阻止某些资源被正确释放。

第二个线程是后台线程吗?如何响应关闭事件并手动终止第二个线程?关闭窗口不一定会关闭任何后台线程。@Andy谢谢。正如您所建议的,我在第一个窗体上使用了FormClosed事件,然后使用thread.Abort-它关闭了第二个窗口并中止了第二个线程。@Teifi非常感谢编辑