Metodo WorkflowInvoker.Invoke (TimeSpan)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Richiama in modo sincrono un flusso di lavoro con intervallo di timeout specificato.

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

public IDictionary<string, object> Invoke(
	TimeSpan timeout
)

Parametri

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: System.Collections.Generic.IDictionary<String, Object>

Un dizionario dei valori OutArgument e InOutArgument dell'attività radice con chiave basata sul nome dell'argomento che rappresentano gli output del 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 che contiene due attività WriteLine e un'attività Delay configurato con un Duration di un minuto. Questo flusso di lavoro viene richiamato due volte; la prima volta con un intervallo di timeout di due minuti e la seconda volta con un intervallo di timeout di 30 secondi. Il primo flusso di lavoro viene completato correttamente, ma non il secondo, che genera un'eccezione TimeoutException. Viene visualizzato il seguente messaggio.

L'operazione non è stata completata entro l'intervallo di timeout consentito di 00:00:30.La durata consentita per questa operazione potrebbe sono stati una parte di un timeout più lungo.
Activity wf = new Sequence()
{
    Activities = 
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

// This workflow completes successfully.
invoker.Invoke(TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    invoker.Invoke(TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

For an example of using Invoke with output arguments, see the overload of Overload:System.Activities.WorkflowInvoker.Invoke with the same parameters as this overload without the time-out interval.

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