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