public void PingAdversary(ProximityDevice device, NotifyNfcReady notify) { if (subscribeId != -1) { proximityDevice.StopSubscribingForMessage(subscribeId); subscribeId = -1; } if (publishId != -1) { proximityDevice.StopPublishingMessage(publishId); publishId = -1; } if (state == NfcManager.ProtoState.Busy) { return; } state = NfcManager.ProtoState.NotReady; notifyReady = notify; initialMessage.devicetime = random.NextDouble(); MemoryStream stream = new MemoryStream(); DataContractSerializer serializer = new DataContractSerializer(initialMessage.GetType()); serializer.WriteObject(stream, initialMessage); stream.Position = 0; var dataWriter = new DataWriter(); dataWriter.WriteBytes(stream.GetBuffer()); proximityDevice = device; publishId = proximityDevice.PublishBinaryMessage("Windows.CarTrumps", dataWriter.DetachBuffer()); subscribeId = proximityDevice.SubscribeForMessage("Windows.CarTrumps", OnMessageReceived); }