我要做一个外挂,里面包含多个FORM,而且每个FORM都能独立操作某些内容,都是用TIMER进行操作的,为什么那些FORM单独做成一个工程的时候就运行正常,加到其他工程里用一个总工程操作时却只能有两个FORM能运行,其他的FORM都停顿了,是什么原因,听说是线程问题,应该是如何解决呢?

解决方案 »

  1.   

    VB不存在线程停顿。
    VB的程序是单线程的。
    Timer是对SetTimer()和WM_TIMER的封装,并不能保证准时。
    总工程、其余工程,在VB里面没有这样的概念。你是作为ActiveX EXE/DLL加载的么?检查你程序的依赖性。
      

  2.   


    可能我表达的不太明白,意思是说,如果我把FORM设置成单一的工程里面(即指工程只有一个FORM时),程序运行没有任何问题,然而我把那FORM与其他FORM(都是某些网页的外挂,只是用一个工程来同时运行,不想做太多工程而已)和起来之后,却只有先加载的两个FORM可以运行,其他FORM都停顿了,是什么原因啊?而且不做任何ACTIVEX或者DLL加载,只是用了WEBBROWSER和TIMER来做成工程
      

  3.   

    不知楼主是如何“调度”你的一大堆窗口进行协同工作的。按理说,如果你的每个窗口都是独立工作的,直接加到一起也不应该有问题(当然系统处理能力达不到,又是另外一回事了)。把工程设置成从 Sub Main 启动,添加一个标准模块,并输入下面的代码:
    Sub Main()
        Form1.Show
        Form2.Show
        Form3.Show
        Form4.Show
        Form5.Show
        ' .........
        ' 把所有的窗体列出……
    End Sub
      

  4.   

    全部弄到一个Form下
    定义不同的类模组.
    用的时候New 一个类实体直接调用.
      

  5.   

    不会吧?测试以下代码。'form1添加label1-label3
    'form1 code
    Private Sub Form_Load()
        Form2.Hide
        Form3.Hide
        Form4.Hide
        
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       End
    End Sub'form2 code
    Private Sub Form_Load()
       Timer1.Interval = 500
       
    End SubPrivate Sub Timer1_Timer()
        Form1.Label1 = Rnd * 50
    End Sub'form3 code
    Private Sub Form_Load()
       Timer1.Interval = 500
       
    End SubPrivate Sub Timer1_Timer()
        Form1.Label2 = Rnd * 50
    End Sub'form4 code
    Private Sub Form_Load()
       Timer1.Interval = 500
       
    End SubPrivate Sub Timer1_Timer()
        Form1.Label3 = Rnd * 50
    End Sub
      

  6.   

    看来真的不行了,因为每个窗口的代码不同,而且难归一,所以不能用Lost_Painting所提到的方法,然而chinaboyzyq所提的代码我昨天都试过,是可以,我想应该就是系统处理能力达不到而已.不过VB中除了WEBBROWSER之外,有其他浏览网页的控件吗,我需要小资源一点的.
      

  7.   

    使用Timer类,这样每个窗体都可以运行了