Bagikan melalui


WorkflowInvoker.BeginInvoke Metode

Definisi

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.

Berlaku untuk