WorkflowInvoker.BeginInvoke Metode

Definisi

Memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron.

Overload

Nama Deskripsi
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 putar dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan untuk EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, yang dikuncurkan berdasarkan 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 selesai, 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, dikodekan berdasarkan nama argumen.

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 putar dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan untuk EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, yang dikuncurkan berdasarkan 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 selesai, 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 selesai sebelum dibatalkan dan dilemparkan TimeoutException .

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 putar dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan untuk EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, yang dikuncurkan berdasarkan 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 batas waktu yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan saat metode dipanggil EndInvoke .

Note

Hanya TimeoutException dilemparkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval batas waktu yang ditentukan akan selesai dengan sukses jika alur kerja tidak memasuki kondisi 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, dikodekan berdasarkan nama argumen.

timeout
TimeSpan

Interval di mana alur kerja harus selesai sebelum dibatalkan dan dilemparkan TimeoutException .

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 putar dadu. Ini diambil dengan memanggil EndInvoke. Saat panggilan untuk EndInvoke kembali, setiap argumen output dikembalikan dalam kamus output, yang dikuncurkan berdasarkan 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 batas waktu yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan saat EndInvoke dipanggil.

Note

Hanya TimeoutException dilemparkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval batas waktu yang ditentukan akan selesai dengan sukses jika alur kerja tidak memasuki kondisi diam.

Metode ini memanggil alur kerja secara asinkron menggunakan IAsyncResult pola desain asinkron. Untuk informasi selengkapnya, lihat Gambaran Umum Pemrograman Asinkron.

Berlaku untuk