+
+ static void CheckContinueArguments (Task[] tasks, object continuationAction, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
+ {
+ if (tasks == null)
+ throw new ArgumentNullException ("tasks");
+
+ if (tasks.Length == 0)
+ throw new ArgumentException ("The tasks argument contains no tasks", "tasks");
+
+ foreach (var ta in tasks) {
+ if (ta == null)
+ throw new ArgumentException ("The tasks argument contains a null value", "tasks");
+ }
+
+ if (continuationAction == null)
+ throw new ArgumentNullException ("continuationAction");
+ if (scheduler == null)
+ throw new ArgumentNullException ("scheduler");
+
+ const TaskContinuationOptions notAllowedOptions =
+ TaskContinuationOptions.NotOnRanToCompletion |
+ TaskContinuationOptions.NotOnFaulted |
+ TaskContinuationOptions.NotOnCanceled |
+ TaskContinuationOptions.OnlyOnRanToCompletion |
+ TaskContinuationOptions.OnlyOnFaulted |
+ TaskContinuationOptions.OnlyOnCanceled;
+
+ if ((continuationOptions & notAllowedOptions) != 0)
+ throw new ArgumentOutOfRangeException ("continuationOptions");
+ }