2011-07-28 23 views
1

我目前在我的VB.NET解決方案中使用Florian Leitner的HID USB library來與針腳墊進行通信。按照他的樣本代碼,我建立一個事件處理程序從被存儲在一個ArrayList裝置處理收到的響應稱爲usbBuffer:想不通爲什麼ArrayList.RemoveAt()不起作用

Private Sub BufferEventHandler(ByVal sender As Object, ByVal e As System.EventArgs) 

    If USBInterface.usbBuffer.Count > 0 Then 

     While USBInterface.usbBuffer(0) Is Nothing 

      SyncLock USBInterface.usbBuffer.SyncRoot 

       USBInterface.usbBuffer.RemoveAt(0) 

      End SyncLock 

     End While 

     _receiveArray = CType(USBInterface.usbBuffer(0), Byte()) 

     _usbInterface.stopRead() 

     SyncLock USBInterface.usbBuffer.SyncRoot 

      USBInterface.usbBuffer.RemoveAt(0) 

     End SyncLock 

    End If 

End Sub 

的問題是,該RemoveAt移除不工作,由於在第一元件在處理程序完成後,列表將保留在那裏。有人能告訴我我做錯了什麼,或者可能使用不同的方法?

回答

0

msdn說,synclock的對象不能是空的。 ,你不能改變lockobject的值。

MSDN http://msdn.microsoft.com/en-us/library/3a86s51t(VS.80).aspx

規則

鎖定對象值。 lockobject的值不能爲Nothing。在SyncLock語句中使用它之前,您必須先創建鎖定對象。

執行SyncLock塊時,您無法更改lockobject的值。該機制要求鎖對象保持不變。

相關問題