Metodo WorkflowApplication.Terminate (Exception, TimeSpan)

.NET Framework (current version)
 

Termina un'istanza del flusso di lavoro utilizzando l'eccezione e l'intervallo di timeout specificato.

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

public void Terminate(
	Exception reason,
	TimeSpan timeout
)

Parametri

reason
Type: System.Exception

Motivo della chiusura dell'istanza del flusso di lavoro.

timeout
Type: System.TimeSpan

Intervallo nel quale l'operazione Terminate deve essere completata prima che l'operazione è cancellata e un TimeoutException è generato.

Questo metodo pianifica la chiusura del flusso di lavoro. Per essere notificato quando la chiusura è stata completata, utilizzare l'handle P:System.Activities.WorkflowApplication.OnCompleted.

Nell'esempio seguente viene ospitato un flusso di lavoro tramite WorkflowApplication. Un'istanza WorkflowApplication viene costruita utilizzando la definizione di flusso di lavoro specificata, vengono gestiti gli eventi del ciclo di vita del flusso di lavoro desiderati e il flusso di lavoro viene richiamato con una chiamata a Run. Dopo aver avviato il flusso di lavoro, viene richiamato l'oggetto Terminate. Quando il flusso di lavoro viene terminato, l'output seguente viene visualizzato nella console.

Avvio del flusso di lavoro.Flusso di lavoro de28efe5-9057-472b-8d95-899c249893c5 terminato.Eccezione: System. ApplicationExceptiondel flusso di lavoro.Flusso di lavoro de28efe5-9057-472b-8d95-899c249893c5 scaricato.
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

// Run the workflow.
wfApp.Run();

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Terminate(new ApplicationException("Terminating the workflow."),
    TimeSpan.FromSeconds(15));

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