WorkflowInvoker.Invoke 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
워크플로를 동기적으로 호출하고 루트 작업의 OutArgument 사전과 InOutArgument 워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 값을 반환합니다.
오버로드
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
Invoke(Activity, IDictionary<String,Object>, TimeSpan)
지정된 워크플로 정의, IDictionary<TKey,TValue> 입력 매개 변수 및 시간 제한 간격을 사용하여 워크플로를 동기적으로 호출합니다.
public:
static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow, System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity * System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, inputs As IDictionary(Of String, Object), timeout As TimeSpan) As IDictionary(Of String, Object)
매개 변수
- workflow
- Activity
호출할 워크플로의 워크플로 정의입니다.
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
- timeout
- TimeSpan
워크플로가 중단되고 throw되기 전에 완료해야 하는 TimeoutException 간격입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 두 WriteLine 개의 활동과 Delay 1분으로 구성된 활동이 포함된 워크플로를 Duration 호출합니다. 이 워크플로는 두 번 호출됩니다. 제한 시간 간격이 2분인 첫 번째 시간 및 제한 시간 간격이 30초인 두 번째 시간입니다. 첫 번째 워크플로가 성공적으로 완료되지만 두 번째 워크플로는 완료되지 않고 throw TimeoutException 됩니다.
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."
}
}
};
// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));
// This workflow does not complete and a TimeoutException
// is thrown.
try
{
WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
Console.WriteLine(ex.Message);
}
입력 및 출력 인수와 함께 사용하는 Invoke 예제는 제한 시간 간격 없이 이 오버로드와 동일한 매개 변수를 사용하는 오버로드 Invoke 를 참조하세요.
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 지정된 제한 시간 간격 내에 완료되지 않으면 워크플로가 중단되고 throw TimeoutException 됩니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 워크플로가 유휴 상태가 되지 않으면 완료하는 데 지정된 시간 제한 간격보다 더 오래 걸리는 워크플로가 성공적으로 완료됩니다.
적용 대상
Invoke(Activity, TimeSpan)
지정된 워크플로 정의 및 시간 제한 간격을 사용하여 워크플로를 동기적으로 호출합니다.
public:
static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, TimeSpan timeout);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow, TimeSpan timeout);
static member Invoke : System.Activities.Activity * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, timeout As TimeSpan) As IDictionary(Of String, Object)
매개 변수
- workflow
- Activity
호출할 워크플로의 워크플로 정의입니다.
- timeout
- TimeSpan
워크플로가 중단되고 throw되기 전에 완료해야 하는 TimeoutException 간격입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 두 WriteLine 개의 활동과 Delay 1분으로 구성된 활동이 포함된 워크플로를 Duration 호출합니다. 이 워크플로는 두 번 호출됩니다. 제한 시간 간격이 2분인 첫 번째 시간 및 제한 시간 간격이 30초인 두 번째 시간입니다. 첫 번째 워크플로가 성공적으로 완료되지만 두 번째 워크플로는 완료되지 않고 throw TimeoutException 됩니다.
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."
}
}
};
// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));
// This workflow does not complete and a TimeoutException
// is thrown.
try
{
WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
Console.WriteLine(ex.Message);
}
출력 인수와 함께 사용하는 Invoke 예제는 제한 시간 간격 없이 이 오버로드와 동일한 매개 변수를 사용하는 오버로드 Invoke 를 참조하세요.
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 지정된 제한 시간 간격 내에 완료되지 않으면 워크플로가 중단되고 throw TimeoutException 됩니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 워크플로가 유휴 상태가 되지 않으면 완료하는 데 지정된 시간 제한 간격보다 더 오래 걸리는 워크플로가 성공적으로 완료됩니다.
적용 대상
Invoke(Activity, IDictionary<String,Object>)
지정된 워크플로 정의 및 IDictionary<TKey,TValue> 입력 매개 변수를 사용하여 워크플로를 동기적으로 호출합니다.
public:
static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow, System.Collections.Generic.IDictionary<string,object> inputs);
static member Invoke : System.Activities.Activity * System.Collections.Generic.IDictionary<string, obj> -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, inputs As IDictionary(Of String, Object)) As IDictionary(Of String, Object)
매개 변수
- workflow
- Activity
호출할 워크플로의 워크플로 정의입니다.
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 두 개의 입력 인수와 두 개의 출력 인수가 있는 단일 Divide 작업으로 구성된 워크플로를 호출합니다. 워크플로가 호출되면 arguments 인수 이름으로 키가 지정된 각 입력 인수의 값을 포함하는 사전이 전달됩니다.
Invoke 호출이 반환되면 각 출력 인수는 outputs 사전에 반환되며 인수 이름으로도 키가 지정됩니다.
public sealed class Divide : CodeActivity
{
[RequiredArgument]
public InArgument<int> Dividend { get; set; }
[RequiredArgument]
public InArgument<int> Divisor { get; set; }
public OutArgument<int> Remainder { get; set; }
public OutArgument<int> Result { get; set; }
protected override void Execute(CodeActivityContext context)
{
int quotient = Dividend.Get(context) / Divisor.Get(context);
int remainder = Dividend.Get(context) % Divisor.Get(context);
Result.Set(context, quotient);
Remainder.Set(context, remainder);
}
}
int dividend = 500;
int divisor = 36;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);
IDictionary<string, object> outputs =
WorkflowInvoker.Invoke(new Divide(), arguments);
Console.WriteLine("{0} / {1} = {2} Remainder {3}",
dividend, divisor, outputs["Result"], outputs["Remainder"]);
워크플로 ActivityWithResultCodeActivity<TResult>Activity<TResult>가 파생되거나, 잘 정의된 Result 출력 인수 외에 출력 인수가 있는 경우 추가 인수를 검색하려면 이 오버로드와 같은 제네릭이 아닌 오버로드Invoke를 사용해야 합니다. 이렇게 하려면 Invoke 전달된 워크플로 정의가 Activity형식이어야 합니다. 이 예제 Divide 에서 CodeActivity<int>활동은 파생되지만 단일 반환 값 대신 인수 사전을 반환하는 이 오버로드Activity가 사용되도록 선언 Invoke 됩니다.
public sealed class Divide : CodeActivity<int>
{
public InArgument<int> Dividend { get; set; }
public InArgument<int> Divisor { get; set; }
public OutArgument<int> Remainder { get; set; }
protected override int Execute(CodeActivityContext context)
{
int quotient = Dividend.Get(context) / Divisor.Get(context);
int remainder = Dividend.Get(context) % Divisor.Get(context);
Remainder.Set(context, remainder);
return quotient;
}
}
int dividend = 500;
int divisor = 36;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);
Activity wf = new Divide();
IDictionary<string, object> outputs =
WorkflowInvoker.Invoke(wf, arguments);
Console.WriteLine("{0} / {1} = {2} Remainder {3}",
dividend, divisor, outputs["Result"], outputs["Remainder"]);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
적용 대상
Invoke(IDictionary<String,Object>, TimeSpan)
지정된 입력 매개 변수 및 지정된 제한 시간 간격을 사용하여 생성자에 전달 WorkflowInvoker(Activity) 된 IDictionary<TKey,TValue> 활동을 동기적으로 호출합니다.
public:
System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public System.Collections.Generic.IDictionary<string,object> Invoke(System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
member this.Invoke : System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (inputs As IDictionary(Of String, Object), timeout As TimeSpan) As IDictionary(Of String, Object)
매개 변수
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
- timeout
- TimeSpan
워크플로가 중단되고 throw되기 전에 완료해야 하는 TimeoutException 간격입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 두 WriteLine 개의 활동과 Delay 1분으로 구성된 활동이 포함된 워크플로를 Duration 호출합니다. 이 워크플로는 두 번 호출됩니다. 제한 시간 간격이 2분인 첫 번째 시간 및 제한 시간 간격이 30초인 두 번째 시간입니다. 첫 번째 워크플로가 성공적으로 완료되었지만 두 번째 워크플로는 완료되지 않고 throw TimeoutException 되고 다음 메시지가 표시됩니다.
The operation did not complete within the allotted timeout of 00:00:30.
The time allotted to this operation may have been a portion of a longer timeout.
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);
}
입력 및 출력 인수와 함께 사용하는 Invoke 예제는 제한 시간 간격 없이 이 오버로드와 동일한 매개 변수를 사용하는 오버로드 Invoke 를 참조하세요.
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 지정된 제한 시간 간격 내에 완료되지 않으면 워크플로가 중단되고 throw TimeoutException 됩니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 워크플로가 유휴 상태가 되지 않으면 완료하는 데 지정된 시간 제한 간격보다 더 오래 걸리는 워크플로가 성공적으로 완료됩니다.
적용 대상
Invoke(IDictionary<String,Object>)
지정된 입력 매개 변수를 사용하여 WorkflowInvoker(Activity) 생성자에 동기적으로 전달된 IDictionary<TKey,TValue> 활동을 호출합니다.
public:
System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public System.Collections.Generic.IDictionary<string,object> Invoke(System.Collections.Generic.IDictionary<string,object> inputs);
member this.Invoke : System.Collections.Generic.IDictionary<string, obj> -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (inputs As IDictionary(Of String, Object)) As IDictionary(Of String, Object)
매개 변수
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 두 개의 입력 인수와 두 개의 출력 인수가 있는 단일 Divide 작업으로 구성된 워크플로를 호출합니다. 워크플로가 호출되면 arguments 인수 이름으로 키가 지정된 각 입력 인수의 값을 포함하는 사전이 전달됩니다.
Invoke 호출이 반환되면 각 출력 인수는 outputs 사전에 반환되며 인수 이름으로도 키가 지정됩니다.
public sealed class Divide : CodeActivity
{
[RequiredArgument]
public InArgument<int> Dividend { get; set; }
[RequiredArgument]
public InArgument<int> Divisor { get; set; }
public OutArgument<int> Remainder { get; set; }
public OutArgument<int> Result { get; set; }
protected override void Execute(CodeActivityContext context)
{
int quotient = Dividend.Get(context) / Divisor.Get(context);
int remainder = Dividend.Get(context) % Divisor.Get(context);
Result.Set(context, quotient);
Remainder.Set(context, remainder);
}
}
int dividend = 500;
int divisor = 36;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);
WorkflowInvoker invoker = new WorkflowInvoker(new Divide());
IDictionary<string, object> outputs = invoker.Invoke(arguments);
Console.WriteLine("{0} / {1} = {2} Remainder {3}",
dividend, divisor, outputs["Result"], outputs["Remainder"]);
워크플로 ActivityWithResultCodeActivity<TResult>Activity<TResult>가 파생되거나, 잘 정의된 Result 출력 인수 외에 출력 인수가 있는 경우 추가 인수를 검색하려면 이 오버로드와 같은 제네릭이 아닌 오버로드Invoke를 사용해야 합니다. 이렇게 하려면 생성자에 전달된 워크플로 정의가 WorkflowInvoker 형식 Activity이어야 합니다. 이 예제 Divide 에서 CodeActivity<int>활동은 파생되지만 단일 반환 값 대신 인수 사전을 반환하는 이 오버로드Activity가 사용되도록 선언 Invoke 됩니다.
public sealed class Divide : CodeActivity<int>
{
public InArgument<int> Dividend { get; set; }
public InArgument<int> Divisor { get; set; }
public OutArgument<int> Remainder { get; set; }
protected override int Execute(CodeActivityContext context)
{
int quotient = Dividend.Get(context) / Divisor.Get(context);
int remainder = Dividend.Get(context) % Divisor.Get(context);
Remainder.Set(context, remainder);
return quotient;
}
}
int dividend = 500;
int divisor = 36;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);
Activity wf = new Divide();
WorkflowInvoker invoker = new WorkflowInvoker(wf);
IDictionary<string, object> outputs = invoker.Invoke(arguments);
Console.WriteLine("{0} / {1} = {2} Remainder {3}",
dividend, divisor, outputs["Result"], outputs["Remainder"]);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
적용 대상
Invoke(Activity)
지정된 워크플로 정의를 사용하여 동기적으로 워크플로를 호출합니다.
public:
static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow);
static member Invoke : System.Activities.Activity -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity) As IDictionary(Of String, Object)
매개 변수
- workflow
- Activity
호출할 워크플로의 워크플로 정의입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 단일 DiceRoll 활동으로 구성된 워크플로를 호출합니다.
DiceRoll 작업에는 주사위 롤 작업의 결과를 나타내는 두 개의 출력 인수가 있습니다. 호출 Invoke 이 반환되면 각 출력 인수가 출력 사전에 반환되고 인수 이름으로 키가 지정됩니다.
public sealed class DiceRoll : CodeActivity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
static Random r = new Random();
protected override void Execute(CodeActivityContext context)
{
D1.Set(context, r.Next(1, 7));
D2.Set(context, r.Next(1, 7));
}
}
IDictionary<string, object> outputs =
WorkflowInvoker.Invoke(new DiceRoll());
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
워크플로의 루트 활동에 출력 인수가 없거나 호스트에서 필요하지 않은 경우 무시될 수 있습니다. 다음 예제에서는 출력 인수가 없는 단일 WriteLine 작업으로 구성된 워크플로를 호출합니다.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker.Invoke(wf);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
적용 대상
Invoke()
생성자에 전달된 워크플로 정의를 사용하여 워크플로를 WorkflowInvoker(Activity) 동기적으로 호출합니다.
public:
System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke();
public System.Collections.Generic.IDictionary<string,object> Invoke();
member this.Invoke : unit -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke () As IDictionary(Of String, Object)
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 단일 DiceRoll 활동으로 구성된 워크플로를 호출합니다.
DiceRoll 작업에는 주사위 롤 작업의 결과를 나타내는 두 개의 출력 인수가 있습니다. 호출 Invoke 이 반환되면 각 출력 인수가 출력 사전에 반환되고 인수 이름으로 키가 지정됩니다. 워크플로는 생성자에 전달된 워크플로 정의를 사용하여 두 번 호출됩니다 WorkflowInvoker .
public sealed class DiceRoll : CodeActivity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
static Random r = new Random();
protected override void Execute(CodeActivityContext context)
{
D1.Set(context, r.Next(1, 7));
D2.Set(context, r.Next(1, 7));
}
}
WorkflowInvoker invoker = new WorkflowInvoker(new DiceRoll());
IDictionary<string, object> outputs =
invoker.Invoke();
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
outputs = invoker.Invoke();
Console.WriteLine("The next two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
워크플로의 루트 활동에 출력 인수가 없거나 호스트에서 필요하지 않은 경우 무시될 수 있습니다. 다음 예제에서는 출력 인수가 없는 단일 WriteLine 작업으로 구성된 워크플로를 호출합니다.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker invoker = new WorkflowInvoker(wf);
invoker.Invoke();
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
적용 대상
Invoke(TimeSpan)
지정된 시간 제한 간격을 사용하여 워크플로를 동기적으로 호출합니다.
public:
System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(TimeSpan timeout);
public System.Collections.Generic.IDictionary<string,object> Invoke(TimeSpan timeout);
member this.Invoke : TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (timeout As TimeSpan) As IDictionary(Of String, Object)
매개 변수
- timeout
- TimeSpan
워크플로가 중단되고 throw되기 전에 완료해야 하는 TimeoutException 간격입니다.
반품
워크플로의 출력을 나타내는 인수 이름으로 키가 지정된 루트 활동의 OutArgument 사전 및 InOutArgument 값입니다.
예제
다음 예제에서는 두 WriteLine 개의 활동과 Delay 1분으로 구성된 활동이 포함된 워크플로를 Duration 호출합니다. 이 워크플로는 두 번 호출됩니다. 제한 시간 간격이 2분인 첫 번째 시간 및 제한 시간 간격이 30초인 두 번째 시간입니다. 첫 번째 워크플로가 성공적으로 완료되었지만 두 번째 워크플로는 완료되지 않고 throw TimeoutException 되고 다음 메시지가 표시됩니다.
The operation did not complete within the allotted timeout of 00:00:30.
The time allotted to this operation may have been a portion of a longer timeout.
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);
}
출력 인수와 함께 사용하는 Invoke 예제는 제한 시간 간격 없이 이 오버로드와 동일한 매개 변수를 사용하는 오버로드 Invoke 를 참조하세요.
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 지정된 제한 시간 간격 내에 완료되지 않으면 워크플로가 중단되고 throw TimeoutException 됩니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 워크플로가 유휴 상태가 되지 않으면 완료하는 데 지정된 시간 제한 간격보다 더 오래 걸리는 워크플로가 성공적으로 완료됩니다.
적용 대상
Invoke<TResult>(Activity<TResult>)
생성자에 전달된 워크플로 정의를 사용하여 워크플로를 WorkflowInvoker(Activity) 동기적으로 호출합니다.
public:
generic <typename TResult>
static TResult Invoke(System::Activities::Activity<TResult> ^ workflow);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow);
static member Invoke : System.Activities.Activity<'Result> -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult)) As TResult
형식 매개 변수
- TResult
워크플로의 형식입니다.
매개 변수
- workflow
- Activity<TResult>
호출할 워크플로의 워크플로 정의입니다. 워크플로 정의는 .에서 ActivityWithResult파생되어야 합니다.
반품
작업 실행 결과가 포함된 TResult 형식의 값입니다.
예제
다음 예제에서는 두 개의 입력 인수가 있는 단일 Add 작업으로 구성된 워크플로를 호출하며, 이 인수에서 CodeActivity<int> 파생되므로 잘 정의된 Result 출력 인수가 하나 있습니다. 워크플로가 호출되면 arguments 인수 이름으로 키가 지정된 각 입력 인수의 값을 포함하는 사전이 전달됩니다. 호출 Invoke 이 반환되면 출력 인수의 Result 값이 반환됩니다.
public sealed class Add : CodeActivity<int>
{
public InArgument<int> X { get; set; }
public InArgument<int> Y { get; set; }
protected override int Execute(CodeActivityContext context)
{
int x = X.Get(context);
int y = Y.Get(context);
return x + y;
}
}
int x = 1;
int y = 2;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);
Console.WriteLine("Invoking Add.");
int result = WorkflowInvoker.Invoke(new Add(), arguments);
Console.WriteLine("{0} + {1} = {2}", x, y, result);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
적용 대상
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)
지정된 워크플로 정의 및 IDictionary<TKey,TValue> 입력 매개 변수를 사용하여 워크플로를 동기적으로 호출합니다.
public:
generic <typename TResult>
static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object)) As TResult
형식 매개 변수
- TResult
워크플로의 형식입니다.
매개 변수
- workflow
- Activity<TResult>
호출할 워크플로의 워크플로 정의입니다.
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
반품
작업 실행 결과가 포함된 TResult 형식의 값입니다.
예제
다음 예제에서는 두 개의 입력 인수가 있는 단일 Add 작업으로 구성된 워크플로를 호출하며, 이 인수에서 CodeActivity<int> 파생되므로 잘 정의된 Result 출력 인수가 하나 있습니다. 워크플로가 호출되면 arguments 인수 이름으로 키가 지정된 각 입력 인수의 값을 포함하는 사전이 전달됩니다. 호출 Invoke 이 반환되면 출력 인수의 Result 값이 반환됩니다.
public sealed class Add : CodeActivity<int>
{
public InArgument<int> X { get; set; }
public InArgument<int> Y { get; set; }
protected override int Execute(CodeActivityContext context)
{
int x = X.Get(context);
int y = Y.Get(context);
return x + y;
}
}
int x = 1;
int y = 2;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);
Console.WriteLine("Invoking Add.");
int result = WorkflowInvoker.Invoke(new Add(), arguments);
Console.WriteLine("{0} + {1} = {2}", x, y, result);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 완료되어야 하는 제한 시간 간격을 구성하려면 다음을 수행하는 Invoke오버로드 중 TimeSpan 하나를 사용합니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 지정된 제한 시간 간격보다 오래 걸리는 워크플로는 워크플로가 유휴 상태가 되지 않으면 성공적으로 완료됩니다.
적용 대상
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)
지정된 워크플로 정의, IDictionary<TKey,TValue> 입력 매개 변수 및 시간 제한 간격을 사용하여 워크플로를 동기적으로 호출합니다.
public:
generic <typename TResult>
static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object), timeout As TimeSpan) As TResult
형식 매개 변수
- TResult
워크플로의 형식입니다.
매개 변수
- workflow
- Activity<TResult>
호출할 워크플로의 워크플로 정의입니다.
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
- timeout
- TimeSpan
워크플로가 중단되고 throw되기 전에 완료해야 하는 TimeoutException 간격입니다.
반품
작업 실행 결과가 포함된 TResult 형식의 값입니다.
예제
다음 예제에서는 두 개의 입력 인수가 있는 단일 Add 작업으로 구성된 워크플로를 호출하며, 이 인수에서 CodeActivity<int> 파생되므로 잘 정의된 Result 출력 인수가 하나 있습니다. 워크플로가 호출되면 arguments 인수 이름으로 키가 지정된 각 입력 인수의 값을 포함하는 사전이 전달됩니다. 호출 Invoke 이 반환되면 출력 인수의 Result 값이 반환됩니다.
public sealed class Add : CodeActivity<int>
{
public InArgument<int> X { get; set; }
public InArgument<int> Y { get; set; }
protected override int Execute(CodeActivityContext context)
{
int x = X.Get(context);
int y = Y.Get(context);
return x + y;
}
}
int x = 1;
int y = 2;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);
Console.WriteLine("Invoking Add.");
int result = WorkflowInvoker.Invoke(new Add(), arguments);
Console.WriteLine("{0} + {1} = {2}", x, y, result);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 지정된 제한 시간 간격 내에 완료되지 않으면 워크플로가 중단되고 throw TimeoutException 됩니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 지정된 제한 시간 간격보다 오래 걸리는 워크플로는 워크플로가 유휴 상태가 되지 않으면 성공적으로 완료됩니다.
적용 대상
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)
지정된 워크플로 정의, 입력 매개 변수, IDictionary<TKey,TValue> 추가 출력 매개 변수 IDictionary<TKey,TValue> 및 시간 제한 간격을 사용하여 워크플로를 동기적으로 호출합니다.
public:
generic <typename TResult>
static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, [Runtime::InteropServices::Out] System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ % additionalOutputs, TimeSpan timeout);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs, out System.Collections.Generic.IDictionary<string,object> additionalOutputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> * IDictionary * TimeSpan -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object), ByRef additionalOutputs As IDictionary(Of String, Object), timeout As TimeSpan) As TResult
형식 매개 변수
- TResult
워크플로의 형식입니다.
매개 변수
- workflow
- Activity<TResult>
호출할 워크플로의 워크플로 정의입니다.
- inputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로에 대한 입력 매개 변수의 사전입니다.
- additionalOutputs
- IDictionary<String,Object>
인수 이름으로 키가 지정된 워크플로의 추가 출력 매개 변수 사전입니다.
- timeout
- TimeSpan
워크플로가 중단되고 throw되기 전에 완료해야 하는 TimeoutException 간격입니다.
반품
작업 실행 결과가 포함된 TResult 형식의 값입니다.
예제
다음 예제에서는 두 개의 입력 인수가 있는 단일 Add 작업으로 구성된 워크플로를 호출하며, 이 인수에서 CodeActivity<int> 파생되므로 잘 정의된 Result 출력 인수가 하나 있습니다. 워크플로가 호출되면 arguments 인수 이름으로 키가 지정된 각 입력 인수의 값을 포함하는 사전이 전달됩니다. 호출 Invoke 이 반환되면 출력 인수의 Result 값이 반환됩니다.
public sealed class Add : CodeActivity<int>
{
public InArgument<int> X { get; set; }
public InArgument<int> Y { get; set; }
protected override int Execute(CodeActivityContext context)
{
int x = X.Get(context);
int y = Y.Get(context);
return x + y;
}
}
int x = 1;
int y = 2;
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);
Console.WriteLine("Invoking Add.");
int result = WorkflowInvoker.Invoke(new Add(), arguments);
Console.WriteLine("{0} + {1} = {2}", x, y, result);
설명
이 메서드는 유휴 시간을 포함하여 워크플로가 완료될 때까지 차단합니다. 모든 워크플로 실행은 호출 스레드에서 실행되도록 보장됩니다. 워크플로가 지정된 제한 시간 간격 내에 완료되지 않으면 워크플로가 중단되고 throw TimeoutException 됩니다.
메모
TimeoutException 시간 제한 간격이 경과하고 실행 중에 워크플로가 유휴 상태가 되는 경우에만 throw됩니다. 지정된 제한 시간 간격보다 오래 걸리는 워크플로는 워크플로가 유휴 상태가 되지 않으면 성공적으로 완료됩니다.