WorkflowInvoker.BeginInvoke Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вызывает рабочий процесс асинхронно с помощью IAsyncResult асинхронного шаблона проектирования.
Перегрузки
| Имя | Описание |
|---|---|
| BeginInvoke(AsyncCallback, Object) |
Вызывает рабочий процесс асинхронно с помощью указанного AsyncCallback и пользовательского состояния. |
| BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
Вызывает рабочий процесс асинхронно с помощью указанных IDictionary<TKey,TValue> входных параметров AsyncCallbackи состояния, предоставленного пользователем. |
| BeginInvoke(TimeSpan, AsyncCallback, Object) |
Вызывает рабочий процесс асинхронно с помощью указанного интервала AsyncCallbackвремени ожидания и предоставленного пользователем состояния. |
| BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
Вызывает рабочий процесс асинхронно с помощью указанных IDictionary<TKey,TValue> входных параметров, интервала AsyncCallbackожидания и предоставленного пользователем состояния. |
Комментарии
Дополнительные сведения см. в обзоре асинхронного программирования.
BeginInvoke(AsyncCallback, Object)
Вызывает рабочий процесс асинхронно с помощью указанного AsyncCallback и пользовательского состояния.
public:
IAsyncResult ^ BeginInvoke(AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke(AsyncCallback callback, object state);
member this.BeginInvoke : AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- callback
- AsyncCallback
Метод, вызываемого при завершении рабочего процесса.
- state
- Object
Необязательный объект, специфичный для приложения, содержащий сведения об асинхронной операции.
Возвращаемое значение
Ссылка на асинхронную операцию вызова.
Примеры
В следующем примере вызывается рабочий процесс, состоящий из LongRunningDiceRoll действия. Действие LongRunningDiceRoll имеет два выходных аргумента, представляющих результаты операции броска кубика. Они извлекаются путем вызова EndInvoke. Когда вызов EndInvoke возвращается, каждый выходной аргумент возвращается в словаре выходных данных с ключом по имени аргумента.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Комментарии
Чтобы получать уведомления о завершении рабочего процесса и извлекать выходные параметры рабочего процесса, вызовите EndInvoke из callback метода. Если EndInvoke вызывается до завершения рабочего процесса, он блокируется до завершения рабочего процесса. Чтобы настроить интервал времени ожидания, в котором рабочий процесс должен завершиться, используйте одну из BeginInvoke перегрузок, которые принимают TimeSpan.
Этот метод вызывает рабочий процесс асинхронно с помощью асинхронного шаблона конструктора IAsyncResult . Дополнительные сведения см. в обзоре асинхронного программирования.
Применяется к
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
Вызывает рабочий процесс асинхронно с помощью указанных IDictionary<TKey,TValue> входных параметров AsyncCallbackи состояния, предоставленного пользователем.
public:
IAsyncResult ^ BeginInvoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke(System.Collections.Generic.IDictionary<string,object> inputs, AsyncCallback callback, object state);
member this.BeginInvoke : System.Collections.Generic.IDictionary<string, obj> * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (inputs As IDictionary(Of String, Object), callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- inputs
- IDictionary<String,Object>
Словарь входных параметров рабочего процесса с ключом по имени аргумента.
- callback
- AsyncCallback
Метод, вызываемого при завершении рабочего процесса.
- state
- Object
Необязательный объект, специфичный для приложения, содержащий сведения об асинхронной операции.
Возвращаемое значение
Ссылка на асинхронную операцию вызова.
Примеры
В следующем примере вызывается рабочий процесс, состоящий из LongRunningDiceRoll действия. Действие LongRunningDiceRoll имеет два выходных аргумента, представляющих результаты операции броска кубика. Они извлекаются путем вызова EndInvoke. Когда вызов EndInvoke возвращается, каждый выходной аргумент возвращается в словаре выходных данных с ключом по имени аргумента.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Комментарии
Чтобы получать уведомления о завершении рабочего процесса и извлекать выходные параметры рабочего процесса, вызовите EndInvoke из callback метода. Если EndInvoke вызывается до завершения рабочего процесса, он блокируется до завершения рабочего процесса. Чтобы настроить интервал времени ожидания, в котором рабочий процесс должен завершиться, используйте одну из BeginInvoke перегрузок, которые принимают TimeSpan.
Этот метод вызывает рабочий процесс асинхронно с помощью асинхронного шаблона конструктора IAsyncResult . Дополнительные сведения см. в обзоре асинхронного программирования.
Применяется к
BeginInvoke(TimeSpan, AsyncCallback, Object)
Вызывает рабочий процесс асинхронно с помощью указанного интервала AsyncCallbackвремени ожидания и предоставленного пользователем состояния.
public:
IAsyncResult ^ BeginInvoke(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke(TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginInvoke : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- timeout
- TimeSpan
Интервал, в котором рабочий процесс должен завершиться перед прерыванием и TimeoutException создается.
- callback
- AsyncCallback
Метод, вызываемого при завершении рабочего процесса.
- state
- Object
Необязательный объект, специфичный для приложения, содержащий сведения об асинхронной операции.
Возвращаемое значение
Ссылка на асинхронную операцию вызова.
Примеры
В следующем примере вызывается рабочий процесс, состоящий из LongRunningDiceRoll действия. Действие LongRunningDiceRoll имеет два выходных аргумента, представляющих результаты операции броска кубика. Они извлекаются путем вызова EndInvoke. Когда вызов EndInvoke возвращается, каждый выходной аргумент возвращается в словаре выходных данных с ключом по имени аргумента.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Комментарии
Чтобы получать уведомления о завершении рабочего процесса и извлекать выходные параметры рабочего процесса, вызовите EndInvoke из callback метода. Если EndInvoke вызывается до завершения рабочего процесса, он блокируется до завершения рабочего процесса. Если рабочий процесс не завершается в течение указанного интервала времени ожидания, рабочий процесс прерван и TimeoutException возникает при EndInvoke вызове метода.
Note
TimeoutException возникает только в том случае, если интервал ожидания истекает, и рабочий процесс становится бездействующий во время выполнения. Рабочий процесс, который занимает больше указанного интервала времени ожидания, успешно завершается, если не переходит в состояние бездействия.
Этот метод вызывает рабочий процесс асинхронно с помощью асинхронного шаблона конструктора IAsyncResult . Дополнительные сведения см. в обзоре асинхронного программирования.
Применяется к
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
Вызывает рабочий процесс асинхронно с помощью указанных IDictionary<TKey,TValue> входных параметров, интервала AsyncCallbackожидания и предоставленного пользователем состояния.
public:
IAsyncResult ^ BeginInvoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke(System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginInvoke : System.Collections.Generic.IDictionary<string, obj> * TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (inputs As IDictionary(Of String, Object), timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- inputs
- IDictionary<String,Object>
Словарь входных параметров рабочего процесса с ключом по имени аргумента.
- timeout
- TimeSpan
Интервал, в котором рабочий процесс должен завершиться перед прерыванием и TimeoutException создается.
- callback
- AsyncCallback
Метод, вызываемого при завершении рабочего процесса.
- state
- Object
Необязательный объект, специфичный для приложения, содержащий сведения об асинхронной операции.
Возвращаемое значение
Ссылка на асинхронную операцию вызова.
Примеры
В следующем примере вызывается рабочий процесс, состоящий из LongRunningDiceRoll действия. Действие LongRunningDiceRoll имеет два выходных аргумента, представляющих результаты операции броска кубика. Они извлекаются путем вызова EndInvoke. Когда вызов EndInvoke возвращается, каждый выходной аргумент возвращается в словаре выходных данных с ключом по имени аргумента.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Комментарии
Чтобы получать уведомления о завершении рабочего процесса и извлекать выходные параметры рабочего процесса, вызовите EndInvoke из callback метода. Если EndInvoke вызывается до завершения рабочего процесса, он блокируется до завершения рабочего процесса. Если рабочий процесс не завершается в течение указанного интервала времени ожидания, рабочий процесс прерван, и TimeoutException возникает при EndInvoke вызове.
Note
TimeoutException возникает только в том случае, если интервал ожидания истекает, и рабочий процесс становится бездействующий во время выполнения. Рабочий процесс, который занимает больше указанного интервала времени ожидания, успешно завершается, если не переходит в состояние бездействия.
Этот метод вызывает рабочий процесс асинхронно с помощью асинхронного шаблона конструктора IAsyncResult . Дополнительные сведения см. в обзоре асинхронного программирования.