Task <short> PlatformReadRssi() { TaskCompletionSource <short> tcs = new TaskCompletionSource <short>(); void handler(object s, RssiEventArgs e) { ReadRemoteRssi -= handler; switch (e.Status) { case ABluetooth.GattStatus.Success: tcs.SetResult(e.Rssi); break; default: tcs.SetResult(0); break; } } ReadRemoteRssi += handler; bool success = _gatt.ReadRemoteRssi(); if (success) { return(tcs.Task); } else { return(Task.FromResult((short)0)); } }