コード例 #1
0
        private async Task SetAddressToCurrentSelection(Address address, CancellationToken token = default(CancellationToken))
        {
            // Needs to run in a background thread to prevent a potential deadlock issue.
            await Task.Run(async() =>
            {
                var selectionMode = await _addressSelectionModeSubject.Take(1).ToTask(token);
                if (selectionMode == AddressSelectionMode.PickupSelection)
                {
                    _pickupAddressSubject.OnNext(address);
                    await _networkRoamingService.UpdateMarketSettingsIfNecessary(new Position {
                        Latitude = address.Latitude, Longitude = address.Longitude
                    });
                }
                else
                {
                    _destinationAddressSubject.OnNext(address);
                }
            }, token);

            // Do NOT await this
            CalculateEstimatedFare(token).FireAndForget();

            _canExecuteBookingOperation.OnNext(true);
        }