dotnet/reactive · error · ArgumentNullException
Value cannot be null. (Parameter 'repeatCount')
Error message
Value cannot be null. (Parameter 'repeatCount')
What it means
This Repeat(value, repeatCount) overload repeats a value a fixed number of times. Note the source guard checks repeatCount < 0 but throws ArgumentNullException naming 'repeatCount' — so this error fires when a negative count is passed (a likely copy-paste bug; ArgumentOutOfRangeException would be the expected type).
Solutions
- Pass a repeatCount >= 0 (use 0 for no repetitions)
- Clamp negative computed counts before the call, e.g. Math.Max(0, count)
- Fix the upstream computation that produced a negative count
Example fix
// before var obs = AsyncObservable.Repeat(42, count); // count may be -1 // after var obs = AsyncObservable.Repeat(42, Math.Max(0, count));
Defensive patterns
Strategy: validation
Validate before calling
if (repeatCount < 0) throw new ArgumentOutOfRangeException(nameof(repeatCount), repeatCount, "Must be >= 0"); var obs = AsyncObservable.Repeat(value, repeatCount);
Type guard
static bool IsValidRepeatCount(int n) => n >= 0;
Try / catch
try
{
var obs = AsyncObservable.Repeat(value, repeatCount);
}
catch (ArgumentNullException ex) when (ex.ParamName == "repeatCount")
{
var obs = AsyncObservable.Repeat(value, 0); // or clamp and retry
} Prevention
- Clamp computed counts with Math.Max(0, count) before calling Repeat
- Avoid -1 sentinels for repeat counts; use nullable int or explicit flags
- Validate user/config-supplied counts at the boundary before building observables
- Remember the library mislabels this as ArgumentNullException — catch that type for range issues
When it happens
Trigger: Calling AsyncObservable.Repeat(value, repeatCount) with repeatCount < 0, e.g. a count computed from a negative constant, a failed parse defaulting to -1, or a subtraction that went below zero.
Common situations: Computing repeat counts from user input or config that yields -1 as a sentinel; off-by-one arithmetic producing negative values; passing int.Parse failures' sentinel values.
Related errors
- Value cannot be null. (Parameter 'source')
- Value cannot be null. (Parameter 'source9')
- Value cannot be null. (Parameter 'onCompletedAsync')
- Value cannot be null. (Parameter 'onNext')
- Value cannot be null. (Parameter 'onError')
AI-assisted analysis of dotnet/reactive@94b5d5ab91 (2026-09-15).
Data as JSON: /api/errors/7d6ff5dcfb550cb9.
Report an issue: GitHub.
Appendix: source
Thrown at AsyncRx.NET/System.Reactive.Async/Linq/Operators/Repeat.cs:31
public partial class AsyncObservable
{
public static IAsyncObservable<TSource> Repeat<TSource>(TSource value)
{
return Create<TSource>(observer => AsyncObserver.Repeat(observer, value));
}
public static IAsyncObservable<TSource> Repeat<TSource>(TSource value, IAsyncScheduler scheduler)
{
if (scheduler == null)
throw new ArgumentNullException(nameof(scheduler));
return Create<TSource>(observer => AsyncObserver.Repeat(observer, value, scheduler));
}
public static IAsyncObservable<TSource> Repeat<TSource>(TSource value, int repeatCount)
{
if (repeatCount < 0)
throw new ArgumentNullException(nameof(repeatCount));
return Create<TSource>(observer => AsyncObserver.Repeat(observer, value, repeatCount));
}
public static IAsyncObservable<TSource> Repeat<TSource>(TSource value, int repeatCount, IAsyncScheduler scheduler)
{
if (repeatCount < 0)
throw new ArgumentNullException(nameof(repeatCount));
if (scheduler == null)
throw new ArgumentNullException(nameof(scheduler));
return Create<TSource>(observer => AsyncObserver.Repeat(observer, value, repeatCount, scheduler));
}
public static IAsyncObservable<TSource> Repeat<TSource>(this IAsyncObservable<TSource> source)
{
if (source == null)
throw new ArgumentNullException(nameof(source));View on GitHub (pinned to 94b5d5ab91)