[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
.....
thread = new Thread(new ThreadStart(test));
thread.Start();
.....
public void test()
{
if(something)
Application.Exit();
}
如上。我先在Form1里面启动了一个线程(thread)。线程用于检测一个调用的结果(something)。现在我想在线程中关闭Applicaion。求教,如何关闭。Application.Exit()貌似不行。因为thread还没有结束还是什么原因的。
System.Environment.Exit(0);
给分吧。
通过主线程去关闭窗口:
SynchronizationContext syn;
public Form1()
{
InitializeComponent();
syn=SynchronizationContext.Current;
}
private void button1_Click(object sender, EventArgs e)
{
Thread thread=new Thread(new ThreadStart(CloseWin));
thread.Start();
}
public void CloseWin()
{
syn.Post(MainCloseWin,null);
}
public void MainCloseWin(object obj)
{
Close();
}
子线程关闭程序是不安全的。 建议当你想关闭时, 先退出子线程, 回到主线程再关闭
楼上正解
结束的方法有很多种,但子线程关闭主线程,或主线程退出时子线程没有退出,都会造成垃圾线程,很危险,不建议你这样子做.