none
關於執行緒的問題 RRS feed

  • 問題

  • 各位大大, 小弟有一個問題, 想請有經驗的大大指導一下!!

    我有寫一個程式是透過USB傳送資料到其他設備上,至於是什麼設備就不討論了.

    問題在於, 我透過USB傳送資料的時候可能是每台電腦的傳送速度不同, 導致資料會不完整, 所以想說要使用執行緒的方式來等待及判斷程式是否執行完畢, 然後可以再送下一段資料, 不曉得這樣的方式是否正確? 想請各位大大教導一下, 我的用法大概如下

     

    Public sub 傳送的副程式(byval i as string)

    判斷執行緒的狀態是否還在執行?

    If AppThread.ThreadState = ThreadState.Stopped Then

     

    等待執行緒執行完畢

     

    執行USB傳送程式, 將資料送出

    For i = 0 to 資料長度\Buffer大小

      傳送資料

    next

    2008年6月7日 下午 11:22

解答

  • ThreadState.Stopped 的判斷應該用在主執行緒,或是呼叫子執行緒的管理執行緒來使用。

     

    當委派的副程式或函數跑完 End Sub / End Function 後,執行緒的狀態就會變為 ThreadState.Stopped ,這時你可以命令這個執行緒去執行下個動作。

     

    這些線上手冊就有說到,也有範例,VB101  跟 MSDN 都有,VB101 見公告說明,在線上手冊搜尋 多執行緒範例 可找到一個 MultiThread.zip 下載測試。

    2008年6月8日 上午 04:03
    版主

所有回覆

  • 不是很懂你程式的做法,每台PC的效能、運算速度可能不一樣,但USB介面的傳輸速度應該都是一樣的,不會說這台比較慢,那台比較快;你執行緒裡面要做的是甚麼呢?

     

    2008年6月8日 上午 03:13
    版主
  • ThreadState.Stopped 的判斷應該用在主執行緒,或是呼叫子執行緒的管理執行緒來使用。

     

    當委派的副程式或函數跑完 End Sub / End Function 後,執行緒的狀態就會變為 ThreadState.Stopped ,這時你可以命令這個執行緒去執行下個動作。

     

    這些線上手冊就有說到,也有範例,VB101  跟 MSDN 都有,VB101 見公告說明,在線上手冊搜尋 多執行緒範例 可找到一個 MultiThread.zip 下載測試。

    2008年6月8日 上午 04:03
    版主