Compartilhar via


WorkflowRuntime.GetService Método

Definição

Sobrecargas

GetService(Type)

Recupera um serviço do Type especificado do mecanismo de tempo de execução do fluxo de trabalho.

GetService<T>()

Recupera um serviço do tipo genérico especificado do mecanismo de tempo de execução do fluxo de trabalho.

GetService(Type)

Recupera um serviço do Type especificado do mecanismo de tempo de execução do fluxo de trabalho.

public:
 virtual System::Object ^ GetService(Type ^ serviceType);
public object GetService (Type serviceType);
abstract member GetService : Type -> obj
override this.GetService : Type -> obj
Public Function GetService (serviceType As Type) As Object

Parâmetros

serviceType
Type

O Type do serviço a ser recuperado.

Retornos

O serviço do Type especificado.

Implementações

Exceções

serviceType é uma referência nula (Nothing no Visual Basic).

Foi encontrado mais de um serviço do tipo serviceType.

Comentários

GetService gerará um InvalidOperationException se houver mais de um serviço para o especificado Type. Portanto, você deve usar um dos métodos sobrecarregados de GetAllServices se for possível que vários serviços do tipo especificado estejam presentes no WorkflowRuntime. Por exemplo, o mecanismo de tempo de execução do fluxo de trabalho pode ter vários serviços de acompanhamento. Se você solicitar um serviço de acompanhamento especificando a TrackingService classe base, é possível que uma exceção seja gerada.

Aplica-se a

GetService<T>()

Recupera um serviço do tipo genérico especificado do mecanismo de tempo de execução do fluxo de trabalho.

public:
generic <typename T>
 T GetService();
public T GetService<T> ();
member this.GetService : unit -> 'T
Public Function GetService(Of T) () As T

Parâmetros de tipo

T

O tipo de serviço.

Retornos

T

Um único serviço do tipo genérico especificado.

Exceções

Foi encontrado mais de um serviço do tipo genérico.

Exemplos

O exemplo a seguir demonstra como recuperar um único serviço de um WorkflowRuntime objeto; nesse caso, um serviço do tipo ManualWorkflowSchedulerService. Este exemplo é do Exemplo de Threading de Fluxo de Trabalho.

protected override CompositeActivity OnCreateNewBranch()
{
    return new ParallelIfBranch();
}

private void OnAddBranch(object sender, EventArgs e)
{
    CompositeActivity activity1 = this.OnCreateNewBranch();
    CompositeActivity activity2 = base.Activity as CompositeActivity;

    if ((activity2 != null) && (activity1 != null))
    {
        int num1 = this.ContainedDesigners.Count;
        Activity[] activityArray1 = new Activity[] { activity1 };

        if (CanInsertActivities(new ConnectorHitTestInfo(this, HitTestLocations.Designer, activity2.Activities.Count),
            new List<Activity>(activityArray1).AsReadOnly()))
        {
            CompositeActivityDesigner.InsertActivities(this,
                new ConnectorHitTestInfo(this, HitTestLocations.Designer, activity2.Activities.Count),
                new List<Activity>(activityArray1).AsReadOnly(),
                string.Format("Adding branch {0}", activity1.GetType().Name));

            if ((this.ContainedDesigners.Count > num1) && (this.ContainedDesigners.Count > 0))
            {
                this.ContainedDesigners[this.ContainedDesigners.Count - 1].EnsureVisible();
            }
        }
    }
}
Protected Overrides Function OnCreateNewBranch() As CompositeActivity
    Return New ParallelIfBranch()
End Function

Private Sub OnAddBranch(ByVal sender As Object, ByVal e As EventArgs)
    Dim activity1 As CompositeActivity = Me.OnCreateNewBranch()
    Dim activity2 As CompositeActivity = CType(MyBase.Activity, CompositeActivity)

    If (activity2 IsNot Nothing) And (activity1 IsNot Nothing) Then

        Dim num1 As Integer = Me.ContainedDesigners.Count
        Dim activityArray1() As Activity = {activity1}

        If (CanInsertActivities(New ConnectorHitTestInfo(Me, HitTestLocations.Designer, activity2.Activities.Count), _
            New List(Of Activity)(activityArray1).AsReadOnly())) Then

            CompositeActivityDesigner.InsertActivities(Me, _
                New ConnectorHitTestInfo(Me, HitTestLocations.Designer, activity2.Activities.Count), _
                New List(Of Activity)(activityArray1).AsReadOnly(), _
                String.Format("Adding branch 0}", activity1.GetType().Name))

            If (Me.ContainedDesigners.Count > num1) And (Me.ContainedDesigners.Count > 0) Then
                Me.ContainedDesigners(Me.ContainedDesigners.Count - 1).EnsureVisible()
            End If
        End If
    End If
End Sub

Comentários

GetService gerará um InvalidOperationException se houver mais de um serviço para o tipo genérico especificado. Portanto, você deve usar um dos métodos sobrecarregados de GetAllServices se for possível que vários serviços do tipo genérico estejam presentes no WorkflowRuntime. Por exemplo, o mecanismo de tempo de execução do fluxo de trabalho pode ter vários serviços de acompanhamento. Se você solicitar um serviço de acompanhamento especificando a TrackingService classe base, é possível que uma exceção seja gerada.

Aplica-se a