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放在一起可以退出进程.
但如果把它们俩分别放在两个按钮事件中,线程是可以退出,但进程不能退出.
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放在一起可以退出进程.
但如果把它们俩分别放在两个按钮事件中,线程是可以退出,但进程不能退出.
这是Windows系统的设定:内核对象的所有Handle关闭后才会释放
还有一点就是createthread在VB6中是不能用的,在VB的ide调试时没问题,但生成exe后独立运行就会出现内存不能为只读的错误信息.(指在win2k下其它下面没有试过)
TerminateThread 只是退出线程,不是退出进程
是的。 不要去打 CreateThread 的主意了,因为vb原理根本就不适合
Public bFlag as Boolean在线程的内容里加:
If bFlag Then Exit Function然后通过外部调控bFlag=True结束进程。要强制退出,可以用End.