我希望在我的程序中,在程序运行中能够启动一个线程,用它我就可以测试我的程序中的某些状态?不能是简单的循环,那样就没法运行其它部分了,必须保证程序能正常运行,哪怕是中断也行,也能做到定时检测。

解决方案 »

  1.   

    这就是一个多线程的问题,什么是GZ?难道VB做不了?VB高手帮帮忙!
      

  2.   

    vb是天生单线程,纯用vb应该不能实现,可以用api来实现,但不太稳定.
    http://expert.csdn.net/Expert/topic/1834/1834213.xml?temp=.3574793
    这里有讨论过。
      

  3.   

    http://www.csdn.net/develop/Read_Article.asp?Id=18660用api可以,但是不稳定,建议用VC实现吧vb.net实现多线程就很容易了!
      

  4.   

    http://www.bssoft.com.cn/vbThread.rar 
      

  5.   

    谢谢楼上的帮忙,还有一个问题:
    你们使用了
    Public Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Long, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
    来创建线程,在我这个简单程序中并没有出错,但是每次我关闭应用程序时,整个都给关了,包括我的调试界面,是不是因为没有关闭线程?如果是,怎样关闭?
      

  6.   

    上面的我已经知道了,下面的方法
    Public Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
    但奇怪的是我在关闭线程后再次创建线程,和上次完全一样,但
    Form1.FlatScrollBar1.Value = Form1.FlatScrollBar1.Max * (Form1.MediaPlayer1.CurrentPosition / playTotal)已经不再运行,也就是原来让她执行的内容不执行了,是不是原来的没有释放?因为我看到TerminateThread这个方法执行后hThread未改变。
      

  7.   

    虽然VB程序大多是单线程的,但我看过MSDN上VB添加线程的例子,不过很复杂,而且很不实用,我后来的解决办法就是用VB做了个动态连接库,把一部分只有多线程实现的功能移植到.dll上就可以了,你试试看