private void ReceiveCallback(System.IAsyncResult ar) { ReceiveStateObject state = (ReceiveStateObject)ar.AsyncState; byte[] buff = state.buffer; try{ Body_ b = new Body_(); b.FromBytes(buff); //Debug.Log ("Received " + b.name + " translation, (x,y,z)=" + b.translation.x + "," + b.translation.y + "," + b.translation.z + "\n"); StateMutex.WaitOne(); Bodies_[b.name] = b; StateMutex.ReleaseMutex(); } catch (Exception ex) { Debug.Log("Caught: " + ex.Message); } viconSocket.BeginReceive(state.buffer, 0, state.BufferSize, 0, new System.AsyncCallback(ReceiveCallback), state); }