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 SubThe problem is that the RemoveAt is not working, since the first element in the list remains there after the handler is done. Could someone please advise as to what I've done wrong, or perhaps use a different approach?