none
請問執行緒RunTime error的問題 RRS feed

  • 問題

  • 程式碼如下

    Public Sub Thread()
         Call Frm1.Show '  ->在這一行會出現RUN TIME ERROR
         Do
              mCount = mCount + 1
              Call Sleep(10)
              If mCount > 10000 Then
                   mCount = 0
              End If
              frmThread.txt_Value.Text = mCount
         Loop Until gbThread_F
        
         Call CloseHandle(hThread)
         If hThread <> 0 Then
              Call TerminateThread(hThread, 0)
         End If
    End Sub

    在程序中有規定不能加入有關Form的程式碼嗎??

    煩請解答....謝謝

     

     

     

     

    2006年5月2日 上午 08:46

解答

  • 請問你是用 VB 6.0 嗎?

    如果是的話,據我所知,VB 6.0 的 UI 物件無法使用在 MultiThreaded Environment,也就是它不能在執行緒中的程式中被呼叫,你可能需要用另外的作法 ...

    你可試看看在執行緒程式中產生 Form 的實體,再呼叫 show(),如果還是不行,那可能就要考量是否還要使用這個方式 ...

    (之前有在 VB.NET 試過在 thread 程式中呼叫 Form 好像有成功 ...)

    2006年5月2日 上午 09:48
    版主

所有回覆

  • 1. Form 的 Show() 直接呼叫即可,不必用 Call

    2. Runtime Error 有千千百百種,請說明清楚是哪個 "Runtime Error" ?

    2006年5月2日 上午 08:49
    版主
  • 出現的是 Run Time error 5

    Frm1.Show  有加Call跟無加都試過了....都會出現  ERROR

    2006年5月2日 上午 08:53
  • Run Time error 5?

    應該有文字說明吧 .

    2006年5月2日 上午 08:59
    版主
  • Run Time error 5?

    Invalid procedure call or argument

    錯誤訊息如上.....不懂哪裡有問題.....煩請解答....感謝

    2006年5月2日 上午 09:26
  • 無效的程序呼叫 ...

    你的子程式是在什麼情況下被呼叫的 ?

    2006年5月2日 上午 09:30
    版主
  • 在按鍵中呼叫API的CreateThread函式

    Private Sub cmdCreateThread_Click()

    hThread = CreateThread(0, AddressOf Thread, 0, 0, hThreadID)

    End Sub

    在modules中定義Thread函式

    Public Sub Thread()
         'Let this thread sleep for 10 seconds

         frm1.show  ->會有錯誤
         Do
              mCount = mCount + 1
              Call Sleep(10)
              If mCount > 10000 Then
                   mCount = 0
              End If
              frm_Thread.txt_ThreadValue.Text = mCount
         Loop Until gbThread_F
        
         Call CloseHandle(hThread)
         If hThread <> 0 Then
              Call TerminateThread(hThread, 0)
         End If
    End Sub

     

     

    2006年5月2日 上午 09:38
  • 請問你是用 VB 6.0 嗎?

    如果是的話,據我所知,VB 6.0 的 UI 物件無法使用在 MultiThreaded Environment,也就是它不能在執行緒中的程式中被呼叫,你可能需要用另外的作法 ...

    你可試看看在執行緒程式中產生 Form 的實體,再呼叫 show(),如果還是不行,那可能就要考量是否還要使用這個方式 ...

    (之前有在 VB.NET 試過在 thread 程式中呼叫 Form 好像有成功 ...)

    2006年5月2日 上午 09:48
    版主
  • 瞭解.....也就是說跟UI有關的物件都不能在Thread中設定

    謝謝

    2006年5月2日 上午 09:59