WorkflowRuntime.GetService Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
GetService(Type) |
Ruft einen Dienst vom angegebenen Type aus der Workflowruntime-Engine ab. |
GetService<T>() |
Ruft einen Dienst des angegebenen generischen Typs aus der Workflowruntime-Engine ab. |
GetService(Type)
Ruft einen Dienst vom angegebenen Type aus der Workflowruntime-Engine ab.
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
Parameter
Gibt zurück
Der Dienst des angegebenen Type.
Implementiert
Ausnahmen
serviceType
ist ein NULL-Verweis (Nothing
in Visual Basic).
Die WorkflowRuntime wurde bereits verworfen.
Es wurde mehr als ein Dienst vom Typ serviceType
gefunden.
Hinweise
GetService löst eine InvalidOperationException aus, wenn für den angegebenen Type mehr als ein Dienst vorhanden ist. Aus diesem Grund sollten Sie eine der überladenen Methoden von GetAllServices verwenden, wenn es möglich ist, dass in der WorkflowRuntime mehrere Dienste des angegebenen Typs vorhanden sind. Die Workflowruntime-Engine kann z.B. mehrere Überwachungsdienste enthalten. Wenn Sie einen Überwachungsdienst anfordern, indem Sie die TrackingService-Basisklasse angeben, ist es möglich, dass eine Ausnahme ausgelöst wird.
Gilt für:
GetService<T>()
Ruft einen Dienst des angegebenen generischen Typs aus der Workflowruntime-Engine ab.
public:
generic <typename T>
T GetService();
public T GetService<T> ();
member this.GetService : unit -> 'T
Public Function GetService(Of T) () As T
Typparameter
- T
Der Diensttyp.
Gibt zurück
Ein einzelner Dienst des angegebenen generischen Typs.
Ausnahmen
WorkflowRuntime wurde bereits verworfen.
Es wurde mehr als ein Dienst des generischen Typs gefunden.
Beispiele
Das folgende Beispiel zeigt, wie Sie einen einzelnen Dienst aus einem WorkflowRuntime-Objekt abrufen. In diesem Fall handelt es sich um einen Dienst vom Typ ManualWorkflowSchedulerService. Dieses Beispiel stammt aus dem Workflowthreadingbeispiel.
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
Hinweise
GetService löst eine InvalidOperationException aus, wenn für den angegebenen generischen Typ mehr als ein Dienst vorhanden ist. Aus diesem Grund sollten Sie eine der überladenen Methoden von GetAllServices verwenden, wenn es möglich ist, dass in der WorkflowRuntime mehrere Dienste des generischen Typs vorhanden sind. Die Workflowruntime-Engine kann z.B. mehrere Überwachungsdienste enthalten. Wenn Sie einen Überwachungsdienst anfordern, indem Sie die TrackingService-Basisklasse angeben, ist es möglich, dass eine Ausnahme ausgelöst wird.