WorkflowInvoker.BeginInvoke Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Richiama un flusso di lavoro in modo asincrono usando il modello di struttura asincrono IAsyncResult.
Overload
BeginInvoke(AsyncCallback, Object) |
Richiama un flusso di lavoro in modo asincrono utilizzando il AsyncCallback specificato e lo stato fornito dall'utente. |
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
Richiama un flusso di lavoro in modo asincrono usando il IDictionary<TKey,TValue> specificato dei parametri di input, AsyncCallback e dello stato fornito dall'utente. |
BeginInvoke(TimeSpan, AsyncCallback, Object) |
Richiama un flusso di lavoro in modo asincrono usando l'intervallo di timeout specificato, il AsyncCallback e lo stato fornito dall'utente. |
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
Richiama un flusso di lavoro in modo asincrono usando il IDictionary<TKey,TValue> specificato dei parametri di input, dell'intervallo di timeout, AsyncCallback e dello stato fornito dall'utente. |
Commenti
Per altre informazioni, vedere Panoramica della programmazione asincrona.
BeginInvoke(AsyncCallback, Object)
Richiama un flusso di lavoro in modo asincrono utilizzando il AsyncCallback specificato e lo stato fornito dall'utente.
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
Parametri
- callback
- AsyncCallback
Metodo da chiamare quando il flusso di lavoro è completato.
- state
- Object
Oggetto facoltativo specifico dell'applicazione che contiene informazioni sull'operazione asincrona.
Restituisce
Un riferimento all'operazione asincrona invoke.
Esempio
Nell'esempio seguente viene richiamato un flusso di lavoro composto da un'attività LongRunningDiceRoll
. L'attività LongRunningDiceRoll
dispone di due argomenti di output che rappresentano i risultati dell'operazione di lancio dei dadi. Questi vengono recuperati chiamando EndInvoke. Nella restituzione della chiamata a EndInvoke, ogni argomento di output viene restituito nel dizionario di output, con chiave basata sul nome dell'argomento.
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.");
}
Commenti
Per ricevere una notifica quando il flusso di lavoro è completo e recuperare i parametri di output del flusso di lavoro, chiamare EndInvoke dal metodo di callback
. Se viene chiamato EndInvoke prima che il flusso di lavoro venga completato, si blocca fino a che il flusso di lavoro viene completato. Per configurare un intervallo di timeout nel quale il flusso di lavoro deve essere completato, usare uno degli overload BeginInvoke che accettano un oggetto TimeSpan.
Questo metodo richiama un flusso di lavoro in modo asincrono usando il modello di struttura asincrono IAsyncResult. Per altre informazioni, vedere Panoramica della programmazione asincrona.
Si applica a
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
Richiama un flusso di lavoro in modo asincrono usando il IDictionary<TKey,TValue> specificato dei parametri di input, AsyncCallback e dello stato fornito dall'utente.
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
Parametri
- inputs
- IDictionary<String,Object>
Il dizionario di parametri di input al flusso di lavoro codificati dal nome dell'argomento.
- callback
- AsyncCallback
Metodo da chiamare quando il flusso di lavoro è completato.
- state
- Object
Oggetto facoltativo specifico dell'applicazione che contiene informazioni sull'operazione asincrona.
Restituisce
Un riferimento all'operazione asincrona invoke.
Esempio
Nell'esempio seguente viene richiamato un flusso di lavoro composto da un'attività LongRunningDiceRoll
. L'attività LongRunningDiceRoll
dispone di due argomenti di output che rappresentano i risultati dell'operazione di lancio dei dadi. Questi vengono recuperati chiamando EndInvoke. Nella restituzione della chiamata a EndInvoke, ogni argomento di output viene restituito nel dizionario di output, con chiave basata sul nome dell'argomento.
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.");
}
Commenti
Per ricevere una notifica quando il flusso di lavoro è completo e recuperare i parametri di output del flusso di lavoro, chiamare EndInvoke dal metodo di callback
. Se viene chiamato EndInvoke prima che il flusso di lavoro venga completato, si blocca fino a che il flusso di lavoro viene completato. Per configurare un intervallo di timeout nel quale il flusso di lavoro deve essere completato, usare uno degli overload BeginInvoke che accettano un oggetto TimeSpan.
Questo metodo richiama un flusso di lavoro in modo asincrono usando il modello di struttura asincrono IAsyncResult. Per altre informazioni, vedere Panoramica della programmazione asincrona.
Si applica a
BeginInvoke(TimeSpan, AsyncCallback, Object)
Richiama un flusso di lavoro in modo asincrono usando l'intervallo di timeout specificato, il AsyncCallback e lo stato fornito dall'utente.
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
Parametri
- timeout
- TimeSpan
L'intervallo nel quale deve essere completato il flusso di lavoro prima che sia interrotto e un TimeoutException venga generato.
- callback
- AsyncCallback
Metodo da chiamare quando il flusso di lavoro è completato.
- state
- Object
Oggetto facoltativo specifico dell'applicazione che contiene informazioni sull'operazione asincrona.
Restituisce
Un riferimento all'operazione asincrona invoke.
Esempio
Nell'esempio seguente viene richiamato un flusso di lavoro composto da un'attività LongRunningDiceRoll
. L'attività LongRunningDiceRoll
dispone di due argomenti di output che rappresentano i risultati dell'operazione di lancio dei dadi. Questi vengono recuperati chiamando EndInvoke. Nella restituzione della chiamata a EndInvoke, ogni argomento di output viene restituito nel dizionario di output, con chiave basata sul nome dell'argomento.
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.");
}
Commenti
Per ricevere una notifica quando il flusso di lavoro è completo e recuperare i parametri di output del flusso di lavoro, chiamare EndInvoke dal metodo di callback
. Se viene chiamato EndInvoke prima che il flusso di lavoro venga completato, si blocca fino a che il flusso di lavoro viene completato. Se il flusso di lavoro non è completato nell'intervallo di timeout specificato il flusso di lavoro è interrotto e un TimeoutException viene generato quando il metodo EndInvoke è chiamato.
Nota
L'eccezione TimeoutException viene generata solo se l'intervallo di timeout scade e il flusso di lavoro diventa inattivo durante l'esecuzione. Un flusso di lavoro il cui completamento richiede più tempo rispetto all'intervallo di timeout specificato viene completato correttamente se non diventa inattivo.
Questo metodo richiama un flusso di lavoro in modo asincrono usando il modello di struttura asincrono IAsyncResult. Per altre informazioni, vedere Panoramica della programmazione asincrona.
Si applica a
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
Richiama un flusso di lavoro in modo asincrono usando il IDictionary<TKey,TValue> specificato dei parametri di input, dell'intervallo di timeout, AsyncCallback e dello stato fornito dall'utente.
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
Parametri
- inputs
- IDictionary<String,Object>
Il dizionario di parametri di input al flusso di lavoro codificati dal nome dell'argomento.
- timeout
- TimeSpan
L'intervallo nel quale deve essere completato il flusso di lavoro prima che sia interrotto e un TimeoutException venga generato.
- callback
- AsyncCallback
Metodo da chiamare quando il flusso di lavoro è completato.
- state
- Object
Oggetto facoltativo specifico dell'applicazione che contiene informazioni sull'operazione asincrona.
Restituisce
Un riferimento all'operazione asincrona invoke.
Esempio
Nell'esempio seguente viene richiamato un flusso di lavoro composto da un'attività LongRunningDiceRoll
. L'attività LongRunningDiceRoll
dispone di due argomenti di output che rappresentano i risultati dell'operazione di lancio dei dadi. Questi vengono recuperati chiamando EndInvoke. Nella restituzione della chiamata a EndInvoke, ogni argomento di output viene restituito nel dizionario di output, con chiave basata sul nome dell'argomento.
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.");
}
Commenti
Per ricevere una notifica quando il flusso di lavoro è completo e recuperare i parametri di output del flusso di lavoro, chiamare EndInvoke dal metodo di callback
. Se viene chiamato EndInvoke prima che il flusso di lavoro venga completato, si blocca fino a che il flusso di lavoro viene completato. Se il flusso di lavoro non è completato nell'intervallo di timeout specificato il flusso di lavoro è interrotto e TimeoutException viene generato quando un EndInvoke è chiamato.
Nota
L'eccezione TimeoutException viene generata solo se l'intervallo di timeout scade e il flusso di lavoro diventa inattivo durante l'esecuzione. Un flusso di lavoro il cui completamento richiede più tempo rispetto all'intervallo di timeout specificato viene completato correttamente se non diventa inattivo.
Questo metodo richiama un flusso di lavoro in modo asincrono usando il modello di struttura asincrono IAsyncResult. Per altre informazioni, vedere Panoramica della programmazione asincrona.