예제 #1
0
        internal static async Task <IBleResult> TimeoutBleOperationAsync(this IExecutor executor, Func <CancellationToken, Task <IBleResult> > taskProvider,
                                                                         TimeSpan timeout, CancellationToken cancellationToken = default)
        {
            IBleResult result;

            try
            {
                result = await executor.CancelAfterTimeoutAsync(taskProvider, timeout, true, cancellationToken).ConfigureAwait(false);
            }
            catch (TimeoutException ex)
            {
                result = BleResult.Failure(BleFailure.OperationTimeout, ex);
            }
            catch (Exception ex)
            {
                result = BleResult.Failure(ex);
            }

            return(result);
        }