threadid1 = CreateThread(Null, ByVal O&, AddressOf Module1.OutText1, VarPtr(0), ByVal 0&, threadid1)
threadid2 = CreateThread(Null, ByVal 0&, AddressOf Module1.OutText2, VarPtr(0), ByVal 0&, threadid2)
MsgBox "sdfdf", , "dfd"
Call TerminateThread(threadid1, 0)
Call TerminateThread(threadid2, 0)
把TerminateThread和CreateThread放在一起可以退出进程.
但如果把它们俩分别放在两个按钮事件中,线程是可以退出,但进程不能退出.

解决方案 »

  1.   

    放在sub_main()里也是不好使和以前一样,有没有别的办法,谢了.
      

  2.   

    还需要关闭线程的Handle
    这是Windows系统的设定:内核对象的所有Handle关闭后才会释放
      

  3.   

    建议不要用TerminateThread,用exitthread好一点,或直接在程序退出时用exitprocess退出
    还有一点就是createthread在VB6中是不能用的,在VB的ide调试时没问题,但生成exe后独立运行就会出现内存不能为只读的错误信息.(指在win2k下其它下面没有试过)
      

  4.   

    我结束线程后关闭了handle句柄,可是还是退不出去,把TerminateThread和CreateThread放在一起可以退出进程.这是怎么回事,分开怎么就不行呢?
      

  5.   

    vb6或者更早的版本不可能真正做出实用的多线层程序,这是因为,vb的库函数都是为单线程设计的,如果你调用这些函数,总会出现乱七八糟的错误,你还是死了这条心吧,不过,做一些简单的演示程序来学习还是可以的,不过总是会给你太多的挫折感
      

  6.   

    退出进程?
    TerminateThread 只是退出线程,不是退出进程
      

  7.   

    难道VB就不能做多线程的程序
    是的。 不要去打 CreateThread 的主意了,因为vb原理根本就不适合
      

  8.   

    TerminateThread 不宜轻用,你学过<<深入浅处MFC>>就知道,对系统有伤害,最好是通过全局变量让线程自动退出好一点
      

  9.   

    比如:
    Public bFlag as Boolean在线程的内容里加:
    If bFlag Then Exit Function然后通过外部调控bFlag=True结束进程。要强制退出,可以用End.