private void ReadPayload() { lock (_msg.SyncLock) { if (!_msg.PayloadRead) { int pos = ReadVariableHeader(); var nameArray = new AutoExpandingArray(); while (pos < _msg.MsgBuffer.Length) { string topicName = Frame.DecodeString(_msg.MsgBuffer, ref pos); nameArray.Add(topicName); } _topicNames = new string[nameArray.Count]; for (int i = 0; i < nameArray.Count; i++) { _topicNames[i] = (string)nameArray.GetAt(i); } _msg.PayloadRead = true; } } }