小弟想写一个多线程序,当按command1的时候启动,
线程名为tread1,执行内容为label1.caption = now
请问整个代码该如何写呢?请高手帮忙

解决方案 »

  1.   

    按command2结束该线程,高手指教啊
      

  2.   

    VB本身不能实现多线程,只能调用api函数
    '创建线程API'此API经过改造,lpThreadAttributes改为Any型,lpStartAddress改为传值引用:'因为函数的入口地址由形参变量传递,如果用传址那将传递形参变量的地址而不是函数的入口地址Private Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long'终止线程APIPrivate Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long'激活线程APIPrivate Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long'挂起线程APIPrivate Declare Function SuspendThread Lib "kernel32" (ByVal hThread As Long) As Long但是这些api是线程安全的,而VB的组建却不是线程安全的.
    所以如果在线程的方法中引用多线程会发生致命错误.
    所以你的想通过多线程修改窗体的Caption属性是不可能的.
    当然也可能有我不知道的方法.
      

  3.   

    变通的方法就是用timer控件sub command1_click()
     timer1.enable=true
    end subsub timer1_timer()
      label1.caption = now
    end subsub command2_click()
     timer1.enable=false
    end sub
      

  4.   

    我觉得还是用ActiveX EXE来辅助实现多线程好一点,又稳定~~~呵呵正好我之前为朋友写了一个多线程得到网页地址的代码,有兴趣的可以去看看~~http://www.m5home.com/bbs/dispbbs.asp?boardID=10&ID=556&page=1公告里有游客用户名,可以直接下载。(当然,我还是希望大家常来~~~~~)
      

  5.   

    同意楼上的,用ActiveX EXE实现多线程!
    用Timer控件是无法实现多线程的!