DataflowBlock::Choose<T1, T2> Method (ISourceBlock<T1>^, Action<T1>^, ISourceBlock<T2>^, Action<T2>^, DataflowBlockOptions^)
Monitors two dataflow sources, invoking the provided handler for whichever source makes data available first.
Assembly: System.Threading.Tasks.Dataflow (in System.Threading.Tasks.Dataflow.dll)
public: generic<typename T1, typename T2> static Task<int>^ Choose( ISourceBlock<T1>^ source1, Action<T1>^ action1, ISourceBlock<T2>^ source2, Action<T2>^ action2, DataflowBlockOptions^ dataflowBlockOptions )
Parameters
- source1
-
Type:
System.Threading.Tasks.Dataflow::ISourceBlock<T1>^
The first source.
- action1
-
Type:
System::Action<T1>^
The handler to execute on data from the first source.
- source2
-
Type:
System.Threading.Tasks.Dataflow::ISourceBlock<T2>^
The second source.
- action2
-
Type:
System::Action<T2>^
The handler to execute on data from the second source.
- dataflowBlockOptions
-
Type:
System.Threading.Tasks.Dataflow::DataflowBlockOptions^
The options with which to configure this choice.
Return Value
Type: System.Threading.Tasks::Task<Int32>^A Task<TResult> that represents the asynchronous choice. If both sources are completed prior to the choice completing, or if the CancellationToken provided as part of dataflowBlockOptions is canceled prior to the choice completing, the resulting task will be canceled. When one of the sources has data available and successfully propagates it to the choice, the resulting task will complete when the handler completes; if the handler throws an exception, the task will end in the Faulted state and will contain the unhandled exception. Otherwise, the task will end with its Result set to either 0 or 1 to represent the first or second source, respectively.
Type Parameters
- T1
Specifies type of data contained in the first source.
- T2
Specifies type of data contained in the second source.
| Exception | Condition |
|---|---|
| ArgumentNullException | The source1 is null. -or- The action1 is null. -or- The source2 is null. -or- The action2 is null. -or- The dataflowBlockOptions is null. |