本文整理汇总了C#中ExecutionContext.WhenAnyValue方法的典型用法代码示例。如果您正苦于以下问题:C# ExecutionContext.WhenAnyValue方法的具体用法?C# ExecutionContext.WhenAnyValue怎么用?C# ExecutionContext.WhenAnyValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ExecutionContext
的用法示例。
在下文中一共展示了ExecutionContext.WhenAnyValue方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateShadowExecutionContext
private static ExecutionContext CreateShadowExecutionContext(ExecutionContext context)
{
var shadowExecutionContext = new ExecutionContext(context.SkipAhead);
shadowExecutionContext.SetCurrentExercise(context.CurrentExercise);
shadowExecutionContext.SetCurrentSet(context.CurrentSet);
shadowExecutionContext.SetCurrentRepetition(context.CurrentRepetition);
// if either context is cancelled, cancel the other
context
.WhenAnyValue(x => x.IsCancelled)
.Where(x => x)
.Subscribe(_ => shadowExecutionContext.Cancel());
shadowExecutionContext
.WhenAnyValue(x => x.IsCancelled)
.Where(x => x)
.Subscribe(_ => context.Cancel());
// if either context is paused, pause the other
context
.WhenAnyValue(x => x.IsPaused)
.Subscribe(x => shadowExecutionContext.IsPaused = x);
shadowExecutionContext
.WhenAnyValue(x => x.IsPaused)
.Subscribe(x => context.IsPaused = x);
return shadowExecutionContext;
}
示例2: execute_async_skips_ahead_if_the_context_has_skip_ahead_even_if_the_context_is_paused
public void execute_async_skips_ahead_if_the_context_has_skip_ahead_even_if_the_context_is_paused(int delayInMs, int skipInMs)
{
var delayService = new DelayServiceMock();
var totalDelay = TimeSpan.Zero;
delayService
.When(x => x.DelayAsync(It.IsAny<TimeSpan>(), It.IsAny<CancellationToken>()))
.Do<TimeSpan, CancellationToken>((t, ct) => totalDelay += t)
.Return(Observable.Return(Unit.Default));
var sut = new WaitActionBuilder()
.WithDelayService(delayService)
.WithDelay(TimeSpan.FromMilliseconds(delayInMs))
.Build();
using (var context = new ExecutionContext(TimeSpan.FromMilliseconds(skipInMs)) { IsPaused = true })
{
var progress = context
.WhenAnyValue(x => x.Progress)
.Skip(1)
.CreateCollection();
sut.ExecuteAsync(context);
Assert.Equal(TimeSpan.FromMilliseconds(skipInMs), progress.First());
}
}