WorkflowRuntime.GetService Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
Retornos
O serviço do Type especificado.
Implementações
Exceções
serviceType
é uma referência nula (Nothing
no Visual Basic).
O WorkflowRuntime já foi descartado.
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
Um único serviço do tipo genérico especificado.
Exceções
O WorkflowRuntime já foi descartado.
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.