我正在尝试关闭另一个线程完成时的应用程序。 我正在使用c#。下面的代码只是一个例子
class main
{
constuctor
{
thread t = new thread(open loading screen);
}
public void open loading screen()
{
if (error)
exit program
application.exit(); // doesn't work
this.Close; // doesn't work
thread.abort or mainform.abort doesnt work.
}
}
如果我用application.exit在main上调用一个函数,这不起作用,因为调用是从另一个线程进行的。
那么如何退出程序?
提前致谢
答案 0 :(得分:1)
工作线程应设置变量或发出主线程应定期检查的某种事件 - 它可以在正常情况下以正常方式关闭。
答案 1 :(得分:1)
在主线程中使用IsAlive来检查其他线程是否已经结束,如果有,则退出。
http://www.java2s.com/Code/CSharp/Thread/UseIsAlivetowaitforthreadstoend.htm
答案 2 :(得分:1)
使用后台工作者类而不是普通的线程。 backgroundworker可以用于在UI线程之外的另一个线程中工作。它还有一些方便的事件,可用于将进度更新发送回“拥有”线程。看看:
答案 3 :(得分:0)
constuctor { thread t = new thread(open loading screen); }
我在退出屏幕上使用main for和另一个之间的变量做同样的事情。如果它返回true,我在main中有一个应用程序出口。
一开始我有一个加载屏幕,但是主窗体尚未加载,并且调用是从构造函数进行的,并且construtor还没有完成。
还有一件事情应该是所有的线程/类/加载//程序设置都要在主构造函数中完成,或者其他一些方式如果是这样,请指教。
感谢
答案 4 :(得分:0)
这里是一行代码中的解决方案
mainForm.Invoke((MethodInvoker)(() => mainForm.Close()));
在mainform中有一个Closing事件,如果它在此
之后没有自行关闭,则会关闭该线程