我使用C#做了个多线程的程序,结果点击主窗体右上方的叉有时没反应?
因为要在程序退出前作些工作,主窗体右上方的叉有时不起作用,所以
Closing()函数里的code也就运行不到,请问各位这个问题有遇到过吗?//委托调用处
this.Closing += new System.ComponentModel.CancelEventHandler(this.MainForm_Closing);//Closing函数
private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
   //有时运行不到此处
   ExitProgram();
}

解决方案 »

  1.   

    注意在dispose里或者closing里关闭其他线程,,thread1.Abort()
      

  2.   

    http://blog.csdn.net/zhzuo/archive/2004/06/10/22037.aspx
      

  3.   

    zhzuo(秋枫), 张博:
     你们好!
    我的code里的一个类的工作原理和二位在所给网址上的例子有相通之处,
    我也是在主线程里开了一个线程CheckDB每一段时间检测一次DB,满足条件就使用事件AutoResetEvent Set方法通知另外一个线程去做其它工作,而且工作是正常的,但是在退出的时候点击主窗体右上方的叉有时没反应!
    后来只好做了一个buttton( Exit),在其click事件中调用ExitProgram()做退出前的
    一些工作,最后使用dispose强制性退出程序。不理解的是单主窗体右上方的叉有时没反应,其他按钮操作一切正常,使用Alt-F4的方式也是没有反应的。而且private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)函数的代码一行也不运行!
             ---谢谢!