WorkflowInvoker.EndInvoke(IAsyncResult) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı yüklemelerden biri kullanılarak çağrılan bir iş akışının BeginInvoke sonuçlarını döndürür.
public:
System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ EndInvoke(IAsyncResult ^ result);
public System.Collections.Generic.IDictionary<string,object> EndInvoke (IAsyncResult result);
member this.EndInvoke : IAsyncResult -> System.Collections.Generic.IDictionary<string, obj>
Public Function EndInvoke (result As IAsyncResult) As IDictionary(Of String, Object)
Parametreler
- result
- IAsyncResult
IAsyncResult İş akışını başlatan işleme başvuranBeginInvoke.
Döndürülenler
kök etkinliğinin OutArgument ve InOutArgument iş akışının çıkışlarını temsil eden bağımsız değişken adına göre anahtarlanan değerlerin sözlüğü.
Örnekler
Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll
iş akışını çağırır. Etkinlik, LongRunningDiceRoll
zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkenine sahiptir. Bunlar çağrılarak EndInvokealınır. çağrısı EndInvoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülür.
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.");
}
Açıklamalar
İş akışı tamamlandığında bildirim almak ve iş akışının çıkış parametrelerini almak için tarafından BeginInvokebelirtilen yönteminden çağrısında EndInvoke bulununcallback
. İş akışı tamamlanmadan önce çağrılırsa EndInvoke , iş akışı tamamlanana kadar engeller.
Bu yöntem, zaman uyumsuz tasarım deseni kullanılarak IAsyncResult zaman uyumsuz olarak çağrılan bir iş akışının sonucunu döndürür. Daha fazla bilgi için bkz. Zaman Uyumsuz Programlamaya Genel Bakış.
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin