Aracılığıyla paylaş


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

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)

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

Açıklamalar

İş akışı tamamlandığında bildirim almak için iş akışına bakın InvokeCompleted. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini InvokeAsync 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 oluşmadan ö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 LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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 çalışmakta olan InvokeAsync tüm işlemlerde 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ışına bakın InvokeCompleted. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş 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ıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

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

Örnekler

Aşağıdaki örnek, bir etkinlik içeren LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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ışına bakın InvokeCompleted. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş 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 atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Invoke(IDictionary<String,Object>, TimeSpan)ö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ıyla 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 LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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 çalışmakta olan InvokeAsync tüm işlemlerde 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ışına bakın InvokeCompleted. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini InvokeAsync 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 LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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ışına bakın InvokeCompleted. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini InvokeAsync 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 atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Invoke()ö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 LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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 çalışmakta olan InvokeAsync tüm işlemlerde 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ışına bakın InvokeCompleted. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini InvokeAsync 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ıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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ışına bakın InvokeCompleted. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini InvokeAsync 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 atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Invoke(IDictionary<String,Object>)ö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ıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan ö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 LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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 çalışmakta olan InvokeAsync tüm işlemlerde 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ışına bakın InvokeCompleted. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş 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)

Bir iş akışını belirtilen zaman aşımı aralığıyla 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 oluşmadan önce tamamlanması gereken aralık.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardı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 == true)
    {
        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ışına bakın InvokeCompleted. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş 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 atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Invoke(TimeSpan)özel durumlara bakın.

Şunlara uygulanır