Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4371|回復: 4
打印 上一主題 下一主題

Roboard + XPE 跑thread會當

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-13 00:14:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近用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
複製代碼
2#
發表於 2010-9-13 12:15:26 | 只看該作者
roboard是不會因為執行緒當機的
那個setLabel4內容是長怎樣?!< ----我覺得問題出在這裡
執行緒通常別牽拖UI
硬要做得有別的辦法
3#
 樓主| 發表於 2010-9-14 09:24:28 | 只看該作者
  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
複製代碼
4#
發表於 2010-9-14 13:55:38 | 只看該作者
最好別這樣作
invoke號稱可以搞定UI
但還是會有別的狀況
通常我執行緒就是單純運算或是監視

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

另外[Text] 這種寫法是翻譯器亂翻的
別使用這樣的東西
建議改成"str" 或是"字串" 之類的變數名稱, 程式會比較簡潔易懂
5#
 樓主| 發表於 2010-9-16 07:54:04 | 只看該作者
謝謝m大,那我再試試看吧~~謝謝
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-23 20:10 , Processed in 0.152714 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表