WorkflowInvoker.BeginInvoke Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron.
Overload
BeginInvoke(AsyncCallback, Object) |
Memanggil alur kerja secara asinkron menggunakan status yang ditentukan AsyncCallback dan disediakan pengguna. |
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
Memanggil alur kerja secara asinkron menggunakan parameter input yang ditentukan IDictionary<TKey,TValue> , AsyncCallback, dan status yang disediakan pengguna. |
BeginInvoke(TimeSpan, AsyncCallback, Object) |
Memanggil alur kerja secara asinkron menggunakan interval waktu habis yang ditentukan, AsyncCallback, dan status yang disediakan pengguna. |
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
Memanggil alur kerja secara asinkron menggunakan parameter input yang ditentukan IDictionary<TKey,TValue> , interval waktu habis, AsyncCallback, dan status yang disediakan pengguna. |
Keterangan
Untuk informasi selengkapnya, lihat Gambaran Umum Pemrograman Asinkron.
BeginInvoke(AsyncCallback, Object)
Memanggil alur kerja secara asinkron menggunakan status yang ditentukan AsyncCallback dan disediakan pengguna.
public:
IAsyncResult ^ BeginInvoke(AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (AsyncCallback callback, object state);
member this.BeginInvoke : AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- callback
- AsyncCallback
Metode yang akan dipanggil ketika alur kerja telah selesai.
- state
- Object
Objek khusus aplikasi opsional yang berisi informasi tentang operasi asinkron.
Mengembalikan
Referensi ke operasi pemanggilan asinkron.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari LongRunningDiceRoll
aktivitas. Aktivitas LongRunningDiceRoll
memiliki dua argumen output yang mewakili hasil operasi pelemparan dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan ke EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, dikuntangani oleh nama argumen.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Keterangan
Untuk diberi tahu ketika alur kerja selesai dan mengambil parameter output alur kerja, panggil EndInvoke dari callback
metode . Jika EndInvoke dipanggil sebelum alur kerja selesai, alur kerja akan diblokir hingga alur kerja selesai. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus diselesaikan, gunakan salah BeginInvoke satu kelebihan beban yang mengambil TimeSpan.
Metode ini memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron. Untuk informasi selengkapnya, lihat Gambaran Umum Pemrograman Asinkron.
Berlaku untuk
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
Memanggil alur kerja secara asinkron menggunakan parameter input yang ditentukan IDictionary<TKey,TValue> , AsyncCallback, dan status yang disediakan pengguna.
public:
IAsyncResult ^ BeginInvoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (System.Collections.Generic.IDictionary<string,object> inputs, AsyncCallback callback, object state);
member this.BeginInvoke : System.Collections.Generic.IDictionary<string, obj> * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (inputs As IDictionary(Of String, Object), callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
- callback
- AsyncCallback
Metode yang akan dipanggil ketika alur kerja telah selesai.
- state
- Object
Objek khusus aplikasi opsional yang berisi informasi tentang operasi asinkron.
Mengembalikan
Referensi ke operasi pemanggilan asinkron.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari LongRunningDiceRoll
aktivitas. Aktivitas LongRunningDiceRoll
memiliki dua argumen output yang mewakili hasil operasi pelemparan dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan ke EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, dikuntangani oleh nama argumen.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Keterangan
Untuk diberi tahu ketika alur kerja selesai dan mengambil parameter output alur kerja, panggil EndInvoke dari callback
metode . Jika EndInvoke dipanggil sebelum alur kerja selesai, alur kerja akan diblokir hingga alur kerja selesai. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus diselesaikan, gunakan salah BeginInvoke satu kelebihan beban yang mengambil TimeSpan.
Metode ini memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron. Untuk informasi selengkapnya, lihat Gambaran Umum Pemrograman Asinkron.
Berlaku untuk
BeginInvoke(TimeSpan, AsyncCallback, Object)
Memanggil alur kerja secara asinkron menggunakan interval waktu habis yang ditentukan, AsyncCallback, dan status yang disediakan pengguna.
public:
IAsyncResult ^ BeginInvoke(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginInvoke : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- timeout
- TimeSpan
Interval di mana alur kerja harus diselesaikan sebelum dibatalkan dan TimeoutException dilemparkan.
- callback
- AsyncCallback
Metode yang akan dipanggil ketika alur kerja telah selesai.
- state
- Object
Objek khusus aplikasi opsional yang berisi informasi tentang operasi asinkron.
Mengembalikan
Referensi ke operasi pemanggilan asinkron.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari LongRunningDiceRoll
aktivitas. Aktivitas LongRunningDiceRoll
memiliki dua argumen output yang mewakili hasil operasi pelemparan dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan ke EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, dikuntangani oleh nama argumen.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Keterangan
Untuk diberi tahu ketika alur kerja selesai dan mengambil parameter output alur kerja, panggil EndInvoke dari callback
metode . Jika EndInvoke dipanggil sebelum alur kerja selesai, alur kerja akan diblokir hingga alur kerja selesai. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan saat EndInvoke metode dipanggil.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan dengan sukses jika alur kerja tidak menjadi diam.
Metode ini memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron. Untuk informasi selengkapnya, lihat Gambaran Umum Pemrograman Asinkron.
Berlaku untuk
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
Memanggil alur kerja secara asinkron menggunakan parameter input yang ditentukan IDictionary<TKey,TValue> , interval waktu habis, AsyncCallback, dan status yang disediakan pengguna.
public:
IAsyncResult ^ BeginInvoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginInvoke : System.Collections.Generic.IDictionary<string, obj> * TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (inputs As IDictionary(Of String, Object), timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
- timeout
- TimeSpan
Interval di mana alur kerja harus diselesaikan sebelum dibatalkan dan TimeoutException dilemparkan.
- callback
- AsyncCallback
Metode yang akan dipanggil ketika alur kerja telah selesai.
- state
- Object
Objek khusus aplikasi opsional yang berisi informasi tentang operasi asinkron.
Mengembalikan
Referensi ke operasi pemanggilan asinkron.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari LongRunningDiceRoll
aktivitas. Aktivitas LongRunningDiceRoll
memiliki dua argumen output yang mewakili hasil operasi pelemparan dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan ke EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, dikuntangani oleh nama argumen.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
static void BeginInvokeExample()
{
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
string userState = "BeginInvoke example";
IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);
// You can inspect result from the host to determine if the workflow
// is complete.
Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);
// The results of the workflow are retrieved by calling EndInvoke, which
// can be called from the callback or from the host. If called from the
// host, it blocks until the workflow completes. If a callback is not
// required, pass null for the callback parameter.
Console.WriteLine("Waiting for the workflow to complete.");
IDictionary<string, object> outputs = invoker.EndInvoke(result);
Console.WriteLine("The two dice are {0} and {1}.",
outputs["D1"], outputs["D2"]);
}
static void WorkflowCompletedCallback(IAsyncResult result)
{
Console.WriteLine("Workflow complete.");
}
Keterangan
Untuk diberi tahu ketika alur kerja selesai dan mengambil parameter output alur kerja, panggil EndInvoke dari callback
metode . Jika EndInvoke dipanggil sebelum alur kerja selesai, alur kerja akan diblokir hingga alur kerja selesai. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan saat EndInvoke dipanggil.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan dengan sukses jika alur kerja tidak menjadi diam.
Metode ini memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron. Untuk informasi selengkapnya, lihat Gambaran Umum Pemrograman Asinkron.