在后台做了一个一直运行的线程;当点击退出按钮,触发退出事件后,希望后台程序把没有做完的做完,然后修改完成标志,最后,退出事件拿到这歌标志后,退出程序;1.在按钮的事件里,我设置了退出flag(初始:flag = false,触发退出事件修改为true);2.这个时候,让退出事件的线程在这里等待( while(!IsExit){thread。sleep(3000);})(初始:IsExit = false)3.在后台线程里,当flag=true时,在完成当前操作后,修改IsExit=true;结束线程;4.退出事件,结束睡眠,做最后的退出系统操作;可实际情况是,一直在做第二步;我以为是线程的优先级不对,但是把后台的优先级设置高于事件的优先级,没作用,望高手赐教。如果是我处理的有问题,应该怎么处理。
很奇怪啊vs2005 线程里的内容一会可以调试一会又没法调试,刚才还直接出错“无法导航到XXX(一个方法)”,我很郁闷。还忘高手赐教。
public partial class Form2 : Form
{
private readonly AutoResetEvent wait = new AutoResetEvent(false); public Form2()
{
InitializeComponent();
} protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
new Thread(ThreadWork).Start();
} private void button1_Click(object sender, EventArgs e)
{
wait.WaitOne();
// do exit here
Console.WriteLine("ready to exit now");
} public void ThreadWork()
{
Thread.Sleep(15000);// replace this with the real work
wait.Set();
}
}