2012-08-27 75 views
0

我創建了vb.net應用程序,並添加了一個名爲frmScan的窗體。 我把兩個文本框和兩個標籤。然後我用代表事件寫下面的 線程。Vb.net中的線程問題

Private Delegate Sub DoInitializedDelegate() 

Public motdet As New Thread(AddressOf MotionDetection) 

Private Sub MotionDetection() 
'Do motion detection Work 
'It is never ending Loop until form unload. 
End Sub 

然後我在我的表單加載事件中啓動它。

Private Sub frmScan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
motdet.Start()  
End Sub 

所以我的問題開始時,我加載窗體。 我可以看到表單,但它就像加載一些東西。 我認爲我的運動檢測線程永遠不會結束循環,直到窗體卸載。 我無法在上面提到的兩個文本框內輸入任何內容。 我該怎麼辦?

+1

你有沒有想過嘗試BackgroundWorker的,而不是一個線程的?我發現在過去他們更容易地融入表單模型中。 – Adrian

+0

你是否在這個循環中不斷調用'Invoke'?別。 – Ryan

+0

如果它的無限循環不要求你的UI保持響應。減少線程ThreadPriority並使用@Adrian建議的後臺工作者,它們的價值非常大。 – sarepta

回答

1

在調用長時間運行的線程之前使用Application.DoEvents()

參見例如這裏http://msdn.microsoft.com/en-us/library/aa446540.aspx

+0

這不會做任何事情。 (對不起,如果這不是一個解釋,但它就像試圖解釋爲什麼'Dim x = 5 + 5'在某處不能解決它。) – Ryan