我启了一个进程用来跑job,进程里另起了两个线程,进程和每个线程函数最后我都打了log标志其结束,可是job跑完了,那个exe还在。这种情况目前只在一台电脑上出现过,其它电脑都没有出现过,真是奇怪。求各位帮忙分析分析~~~

解决方案 »

  1.   

    Application.Exit();
    这才是应用退出,如果那个窗体不是启动窗体,就不会退出应用地
      

  2.   

    你可以在Application.Exit();之前手动把那两个线程关掉
      

  3.   

    你把设置那个线程的background属性。
      

  4.   

    Application.Exit(0)在窗体关闭时,强制执行!
      

  5.   

    一般情况下,需要等待你之前Run的部分Close以后才可以关掉进程而很多人对Application.Run的运行机制并没有了解完全当然我是不建议用Application.Exit这种方法因为一个软件如果用了Application.Exit,我个人觉得这个软件的质量一般如果用this.close,因为主窗口仍然在运行,所以进程也在运行,看不见仅仅是因为隐藏了的窗口建议还是管理好线程。
      

  6.   

    对了,界面是一个winform,然后再winform上启动一个exe,所以winform不用退出。不需要用Application.exit()吧,那个exe不是winform,只有程序结束了就能退出吧。
      

  7.   


    Application.ExitThread()
    Application.Exit()
    这两个都行` 有什么区别?
      

  8.   


    //线程开启的时候 保存对象,程序结束的时候关闭线程.
    private Thread th = new Thread(new ThreadStart(test));
    void Form1_Load(object sender, System.EventArgs e)
    {
        th.Start();//启动线程
    }static void test()
    {
        //测试线程的方法
         while(true)
        {
            Thread.Sleep(100);//这个方法永远不会执行完毕.
        }
    }//窗体关闭事件
    void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
    {
        if (th != null && th.IsAlive)
        {
            try
            {
                th.Abort();//终止线程
            }
            catch { }
        }
    }
      

  9.   

    内启其它exe和开线程可不是一回事,你得确定清楚了,线程在程序退出时无法及时关闭可以用Application.Exit强行关闭,其它exe程序则不会随着线程关闭而自动结束运行,内嵌exe程序通常应使用Process类管理