Robofun 機器人論壇

標題: Roboard + XPE 跑thread會當 [打印本頁]

作者: miaoichi    時間: 2010-9-13 00:14
標題: Roboard + XPE 跑thread會當
最近用xpe跑我寫的vb.net,裡面跑一個thread然後就會當機~~~
不知有沒有解?


  1.     Private engineThread As Thread
  2.     Private Sub RunIKEngine()
  3.         Dim a As Long = 0
  4.         Do While True
  5.             a += 1
  6.             SetLabel4(a.ToString)
  7.         Loop
  8.     End Sub

  9.     Private Sub StartThread()
  10.         'Create a thread that will the RunHexEngine method in the background.
  11.         engineThread = New Thread(AddressOf RunIKEngine)
  12.         engineThread.IsBackground = True
  13.         engineThread.Start()
  14.     End Sub
複製代碼

作者: mzw2008    時間: 2010-9-13 12:15
roboard是不會因為執行緒當機的
那個setLabel4內容是長怎樣?!< ----我覺得問題出在這裡
執行緒通常別牽拖UI
硬要做得有別的辦法
作者: miaoichi    時間: 2010-9-14 09:24
  1.     Delegate Sub SetTextBox1Callback(ByVal [text] As String)
  2.     Private Sub SetLabel4(ByVal [text] As String)
  3.         If Me.Label4.InvokeRequired Then
  4.             Dim del As New SetTextBox1Callback(AddressOf SetLabel4)
  5.             Me.Invoke(del, New Object() {[text]})
  6.         Else
  7.             Me.Label4.Text = [text]
  8.         End If
  9.     End Sub
複製代碼

作者: mzw2008    時間: 2010-9-14 13:55
最好別這樣作
invoke號稱可以搞定UI
但還是會有別的狀況
通常我執行緒就是單純運算或是監視

要動UI用timer + 全域變數 最安全

另外[Text] 這種寫法是翻譯器亂翻的
別使用這樣的東西
建議改成"str" 或是"字串" 之類的變數名稱, 程式會比較簡潔易懂
作者: miaoichi    時間: 2010-9-16 07:54
謝謝m大,那我再試試看吧~~謝謝




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2