WorkflowInvoker.InvokeAsync 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.
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.