【发布时间】:2019-09-13 13:43:48
【问题描述】:
我正在从我的初始表单中以单独的线程开始一堆不可见的表单
Thread thread = new Thread(() =>
{
var form= new myform();
try
{
System.Windows.Forms.Application.Run(form);
}
catch (Exception e2) { MessageBox.Show(e.ToString()); }
});
thread.ApartmentState = ApartmentState.STA;
thread.Start();
当我关闭 main for 时,其他线程仍然存在,我必须使用
taskkill /f /im "myexe.exe"
从windows运行。
如何从我的 C# 表单中干净地关闭它们?
任何帮助表示赞赏。
【问题讨论】:
-
嗯...您可以在 System.Diagnostics.Process 中运行该命令
-
添加
thread.IsBackground = true;使其成为自动的。 -
谢谢,现在有没有办法在不退出主窗体的情况下杀死所有的孩子?
-
杀死孩子会让你入狱。您必须很好地问,谷歌“c#取消线程”。您还必须查看this blog post,它显示了当在多个线程上使用表单被证明是一个坏主意时您必须做的事情。
-
是的,我别无选择,我已经有数千行代码依赖于我将在不同线程中使用不同形式的假设