WorkflowInvoker.InvokeAsync Yöntem

Tanım

Olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

Aşırı Yüklemeler

Name Description
InvokeAsync(TimeSpan, Object)

Belirtilen zaman aşımı aralığı ve benzersiz tanımlayıcı ile zaman uyumsuz olarak bir iş akışı çağırır.

InvokeAsync(IDictionary<String,Object>, TimeSpan)

Belirtilen giriş parametreleri ve belirtilen IDictionary<TKey,TValue> zaman aşımı aralığıyla bir iş akışını zaman uyumsuz olarak çağırır.

InvokeAsync(IDictionary<String,Object>, Object)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini ve benzersiz tanımlayıcıyı kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

InvokeAsync()

Bir iş akışını zaman uyumsuz olarak çağırır.

InvokeAsync(Object)

Belirtilen benzersiz tanımlayıcıyı kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

InvokeAsync(IDictionary<String,Object>)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

InvokeAsync(IDictionary<String,Object>, TimeSpan, Object)

Belirtilen giriş parametreleri, belirtilen IDictionary<TKey,TValue> zaman aşımı aralığı ve benzersiz tanımlayıcı ile zaman uyumsuz olarak bir iş akışı çağırır.

InvokeAsync(TimeSpan)

Belirtilen zaman aşımı aralığıyla bir iş akışını zaman uyumsuz olarak çağırır.

Açıklamalar

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden InvokeAsyncbirini TimeSpan kullanın.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

InvokeAsync(TimeSpan, Object)

Belirtilen zaman aşımı aralığı ve benzersiz tanımlayıcı ile zaman uyumsuz olarak bir iş akışı çağırır.

public:
 void InvokeAsync(TimeSpan timeout, System::Object ^ userState);
public void InvokeAsync(TimeSpan timeout, object userState);
member this.InvokeAsync : TimeSpan * obj -> unit
Public Sub InvokeAsync (timeout As TimeSpan, userState As Object)

Parametreler

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException atmadan önce tamamlanması gereken aralık.

userState
Object

Bu belirli zaman uyumsuz çağırma işlemini diğer geçerli zaman uyumsuz çağırma işlemlerinden ayırmak için kullanılan kullanıcı tarafından sağlanan nesne.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

parametresi geçerli userState etkinlik için şu anda çalışan InvokeAsync tüm işlemler arasında benzersiz olmalıdır. Benzersiz değilse userState , bir ArgumentException oluşturulur. userState , içindeki InvokeCompletediş akışını tanımlamak ve kullanarak CancelAsynciş akışını iptal etmek için kullanılır.

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup bir TimeoutException oluşturulur.

Note

TimeoutException, yalnızca zaman aşımı aralığı dolduğunda ve iş akışı yürütme sırasında boşta kaldığında tetiklenir. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Şunlara uygulanır

InvokeAsync(IDictionary<String,Object>, TimeSpan)

Belirtilen giriş parametreleri ve belirtilen IDictionary<TKey,TValue> zaman aşımı aralığıyla bir iş akışını zaman uyumsuz olarak çağırır.

public:
 void InvokeAsync(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public void InvokeAsync(System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
member this.InvokeAsync : System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> unit
Public Sub InvokeAsync (inputs As IDictionary(Of String, Object), timeout As TimeSpan)

Parametreler

inputs
IDictionary<String,Object>

bağımsız değişken adına göre anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException atmadan önce tamamlanması gereken aralık.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup bir TimeoutException oluşturulur.

Note

TimeoutException, yalnızca zaman aşımı aralığı dolduğunda ve iş akışı yürütme sırasında boşta kaldığında tetiklenir. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Bu yöntem, yöntemin zaman uyumlu karşılık geleninin oluşturabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanırsa, görev beklendiğinde bu özel durum oluşturulur. ArgumentExceptiongibi kullanım özel durumları hâlâ eşzamanlı olarak fırlatılır. Depolanan özel durumlar için tarafından Invoke(IDictionary<String,Object>, TimeSpan)oluşan özel durumlara bakın.

Şunlara uygulanır

InvokeAsync(IDictionary<String,Object>, Object)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini ve benzersiz tanımlayıcıyı kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

public:
 void InvokeAsync(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, System::Object ^ userState);
public void InvokeAsync(System.Collections.Generic.IDictionary<string,object> inputs, object userState);
member this.InvokeAsync : System.Collections.Generic.IDictionary<string, obj> * obj -> unit
Public Sub InvokeAsync (inputs As IDictionary(Of String, Object), userState As Object)

Parametreler

inputs
IDictionary<String,Object>

bağımsız değişken adına göre anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

userState
Object

Bu belirli zaman uyumsuz çağırma işlemini diğer geçerli zaman uyumsuz çağırma işlemlerinden ayırmak için kullanılan kullanıcı tarafından sağlanan nesne.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

parametresi geçerli userState etkinlik için şu anda çalışan InvokeAsync tüm işlemler arasında benzersiz olmalıdır. Benzersiz değilse userState , bir ArgumentException oluşturulur. userState , içindeki InvokeCompletediş akışını tanımlamak ve kullanarak CancelAsynciş akışını iptal etmek için kullanılır.

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden InvokeAsyncbirini TimeSpan kullanın.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Şunlara uygulanır

InvokeAsync()

Bir iş akışını zaman uyumsuz olarak çağırır.

public:
 void InvokeAsync();
public void InvokeAsync();
member this.InvokeAsync : unit -> unit
Public Sub InvokeAsync ()

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden InvokeAsyncbirini TimeSpan kullanın.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Bu yöntem, yöntemin zaman uyumlu karşılık geleninin oluşturabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanırsa, görev beklendiğinde bu özel durum oluşturulur. ArgumentExceptiongibi kullanım özel durumları hâlâ eşzamanlı olarak fırlatılır. Depolanan özel durumlar için tarafından Invoke()oluşan özel durumlara bakın.

Şunlara uygulanır

InvokeAsync(Object)

Belirtilen benzersiz tanımlayıcıyı kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

public:
 void InvokeAsync(System::Object ^ userState);
public void InvokeAsync(object userState);
member this.InvokeAsync : obj -> unit
Public Sub InvokeAsync (userState As Object)

Parametreler

userState
Object

Bu belirli zaman uyumsuz çağırma işlemini diğer geçerli zaman uyumsuz çağırma işlemlerinden ayırmak için kullanılan kullanıcı tarafından sağlanan nesne.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

parametresi geçerli userState etkinlik için şu anda çalışan InvokeAsync tüm işlemler arasında benzersiz olmalıdır. userState Parametre benzersiz değilse, bir ArgumentException oluşturulur. userState , içindeki InvokeCompletediş akışını tanımlamak ve kullanarak CancelAsynciş akışını iptal etmek için kullanılır.

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden InvokeAsyncbirini TimeSpan kullanın.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Şunlara uygulanır

InvokeAsync(IDictionary<String,Object>)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

public:
 void InvokeAsync(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public void InvokeAsync(System.Collections.Generic.IDictionary<string,object> inputs);
member this.InvokeAsync : System.Collections.Generic.IDictionary<string, obj> -> unit
Public Sub InvokeAsync (inputs As IDictionary(Of String, Object))

Parametreler

inputs
IDictionary<String,Object>

bağımsız değişken adına göre anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden InvokeAsyncbirini TimeSpan kullanın.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Bu yöntem, yöntemin zaman uyumlu karşılık geleninin oluşturabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanırsa, görev beklendiğinde bu özel durum oluşturulur. ArgumentExceptiongibi kullanım özel durumları hâlâ eşzamanlı olarak fırlatılır. Depolanan özel durumlar için tarafından Invoke(IDictionary<String,Object>)oluşan özel durumlara bakın.

Şunlara uygulanır

InvokeAsync(IDictionary<String,Object>, TimeSpan, Object)

Belirtilen giriş parametreleri, belirtilen IDictionary<TKey,TValue> zaman aşımı aralığı ve benzersiz tanımlayıcı ile zaman uyumsuz olarak bir iş akışı çağırır.

public:
 void InvokeAsync(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout, System::Object ^ userState);
public void InvokeAsync(System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout, object userState);
member this.InvokeAsync : System.Collections.Generic.IDictionary<string, obj> * TimeSpan * obj -> unit
Public Sub InvokeAsync (inputs As IDictionary(Of String, Object), timeout As TimeSpan, userState As Object)

Parametreler

inputs
IDictionary<String,Object>

bağımsız değişken adına göre anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException atmadan önce tamamlanması gereken aralık.

userState
Object

Bu belirli zaman uyumsuz çağırma işlemini diğer geçerli zaman uyumsuz çağırma işlemlerinden ayırmak için kullanılan kullanıcı tarafından sağlanan nesne.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

parametresi geçerli userState etkinlik için şu anda çalışan InvokeAsync tüm işlemler arasında benzersiz olmalıdır. Benzersiz değilse userState , bir ArgumentException oluşturulur. userState , içindeki InvokeCompletediş akışını tanımlamak ve kullanarak CancelAsynciş akışını iptal etmek için kullanılır.

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup bir TimeoutException oluşturulur.

Note

TimeoutException, yalnızca zaman aşımı aralığı dolduğunda ve iş akışı yürütme sırasında boşta kaldığında tetiklenir. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Şunlara uygulanır

InvokeAsync(TimeSpan)

Belirtilen zaman aşımı aralığıyla bir iş akışını zaman uyumsuz olarak çağırır.

public:
 void InvokeAsync(TimeSpan timeout);
public void InvokeAsync(TimeSpan timeout);
member this.InvokeAsync : TimeSpan -> unit
Public Sub InvokeAsync (timeout As TimeSpan)

Parametreler

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException atmadan önce tamamlanması gereken aralık.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("Workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is complete.");

Açıklamalar

İş akışı tamamlandığında bildirim almak için iş akışını işleyebilir.InvokeCompleted İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup bir TimeoutException oluşturulur.

Note

TimeoutException, yalnızca zaman aşımı aralığı dolduğunda ve iş akışı yürütme sırasında boşta kaldığında tetiklenir. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Bu yöntem, olay tabanlı zaman uyumsuz tasarım desenini kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz . Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

Bu yöntem, yöntemin zaman uyumlu karşılık geleninin oluşturabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanırsa, görev beklendiğinde bu özel durum oluşturulur. ArgumentExceptiongibi kullanım özel durumları hâlâ eşzamanlı olarak fırlatılır. Depolanan özel durumlar için tarafından Invoke(TimeSpan)oluşan özel durumlara bakın.

Şunlara uygulanır