Metodo WorkflowInvoker.Invoke<TResult>(Activity<TResult>, IDictionary<String, Object>, IDictionary<String, Object>, TimeSpan)

.NET Framework (current version)
 

Data di pubblicazione: novembre 2016

Richiama un flusso di lavoro in modo sincrono usando la definizione specificata di flusso di lavoro, il IDictionary<TKey, TValue> dei parametri di input, il IDictionary<TKey, TValue> dei parametri di output di uscita e l'intervallo di timeout.

Spazio dei nomi:   System.Activities
Assembly:  System.Activities (in System.Activities.dll)

public static TResult Invoke<TResult>(
	Activity<TResult> workflow,
	IDictionary<string, object> inputs,
	out IDictionary<string, object> additionalOutputs,
	TimeSpan timeout
)

Parametri

workflow
Type: System.Activities.Activity<TResult>

Definizione del flusso di lavoro da richiamare.

inputs
Type: System.Collections.Generic.IDictionary<String, Object>

Il dizionario di parametri di input al flusso di lavoro codificati dal nome dell'argomento.

additionalOutputs
Type: System.Collections.Generic.IDictionary<String, Object>

Il dizionario di parametri di output aggiuntivi del flusso di lavoro codificati dal nome dell'argomento.

timeout
Type: System.TimeSpan

L'intervallo nel quale deve essere completato il flusso di lavoro prima che sia interrotto e un TimeoutException venga generato.

Valore restituito

Type: TResult

Un valore di tipo TResult con il risultato dell'esecuzione dell'attività.

Parametri tipo

TResult

Il tipo di flusso di lavoro.

Questo metodo si blocca fino a che il flusso di lavoro è stato completato, mentre include tempo di inattività. Ogni esecuzione del flusso di lavoro è garantita per essere eseguita sul thread di chiamata. Se il flusso di lavoro non è completato nell'intervallo di timeout specificato il flusso di lavoro è interrotto e un TimeoutException viene generato.

System_CAPS_noteNota

L'eccezione TimeoutException viene generata solo se l'intervallo di timeout scade e il flusso di lavoro diventa inattivo durante l'esecuzione. Un flusso di lavoro il cui completamento richiede più tempo rispetto all'intervallo di timeout specificato viene completato correttamente se non diventa inattivo.

Nell'esempio seguente viene richiamato un flusso di lavoro composto da una singola Add attività che dispone di due argomenti di input e, poiché deriva da CodeActivity<int> ha ben definiti Result argomento di output. Quando viene richiamato il flusso di lavoro, viene passato il dizionario arguments che contiene i valori per ogni argomento di input, con chiavi in base al nome dell'argomento. Quando la chiamata a Invoke restituisce, il valore di Result viene restituito l'argomento di output. Questo esempio di codice si basa il utilizzo della classe WorkflowInvoker esempio.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

.NET Framework
Disponibile da 4.0
Torna all'inizio
Mostra: