Aracılığıyla paylaş


WorkflowInvoker.BeginInvoke Yöntem

Tanım

Zaman uyumsuz tasarım desenini IAsyncResult kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

Aşırı Yüklemeler

BeginInvoke(AsyncCallback, Object)

Belirtilen AsyncCallback ve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini, AsyncCallbackve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Belirtilen zaman aşımı aralığı, AsyncCallbackve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini, zaman aşımı aralığını AsyncCallbackve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

Açıklamalar

Daha fazla bilgi için bkz. Zaman Uyumsuz Programlamaya Genel Bakış.

BeginInvoke(AsyncCallback, Object)

Belirtilen AsyncCallback ve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

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

Parametreler

callback
AsyncCallback

İş akışı tamamlandığında çağrılacak yöntem.

state
Object

Zaman uyumsuz işlem hakkında bilgi içeren isteğe bağlı bir uygulamaya özgü nesne.

Döndürülenler

Zaman uyumsuz çağırma işlemine başvuru.

Ö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. Bunlar çağrılarak EndInvokealınır. çağrısı EndInvoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülü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))
                }
            }
        };
    }
}
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.");
}

Açıklamalar

İş akışı tamamlandığında bildirim almak ve iş akışının çıkış parametrelerini almak için yönteminden çağrısında EndInvoke bulunun callback . İş akışı tamamlanmadan önce çağrılırsa EndInvoke , iş akışı tamamlanana kadar engeller. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini BeginInvoke kullanın.

Bu yöntem, zaman uyumsuz tasarım desenini IAsyncResult kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz. Zaman Uyumsuz Programlamaya Genel Bakış.

Şunlara uygulanır

BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini, AsyncCallbackve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

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

Parametreler

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

callback
AsyncCallback

İş akışı tamamlandığında çağrılacak yöntem.

state
Object

Zaman uyumsuz işlem hakkında bilgi içeren isteğe bağlı bir uygulamaya özgü nesne.

Döndürülenler

Zaman uyumsuz çağırma işlemine başvuru.

Ö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. Bunlar çağrılarak EndInvokealınır. çağrısı EndInvoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülü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))
                }
            }
        };
    }
}
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.");
}

Açıklamalar

İş akışı tamamlandığında bildirim almak ve iş akışının çıkış parametrelerini almak için yönteminden çağrısında EndInvoke bulunun callback . İş akışı tamamlanmadan önce çağrılırsa EndInvoke , iş akışı tamamlanana kadar engeller. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini BeginInvoke kullanın.

Bu yöntem, zaman uyumsuz tasarım desenini IAsyncResult kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz. Zaman Uyumsuz Programlamaya Genel Bakış.

Şunlara uygulanır

BeginInvoke(TimeSpan, AsyncCallback, Object)

Belirtilen zaman aşımı aralığı, AsyncCallbackve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

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

Parametreler

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

callback
AsyncCallback

İş akışı tamamlandığında çağrılacak yöntem.

state
Object

Zaman uyumsuz işlem hakkında bilgi içeren isteğe bağlı bir uygulamaya özgü nesne.

Döndürülenler

Zaman uyumsuz çağırma işlemine başvuru.

Ö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. Bunlar çağrılarak EndInvokealınır. çağrısı EndInvoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülü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))
                }
            }
        };
    }
}
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.");
}

Açıklamalar

İş akışı tamamlandığında bildirim almak ve iş akışının çıkış parametrelerini almak için yönteminden çağrısında EndInvoke bulunun callback . İş akışı tamamlanmadan önce çağrılırsa EndInvoke , iş akışı tamamlanana kadar engeller. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup yöntem çağrıldığında EndInvoke oluşturulurTimeoutException.

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, zaman uyumsuz tasarım desenini IAsyncResult kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz. Zaman Uyumsuz Programlamaya Genel Bakış.

Şunlara uygulanır

BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)

Belirtilen IDictionary<TKey,TValue> giriş parametrelerini, zaman aşımı aralığını AsyncCallbackve kullanıcı tarafından sağlanan durumu kullanarak bir iş akışını zaman uyumsuz olarak çağırır.

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

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.

callback
AsyncCallback

İş akışı tamamlandığında çağrılacak yöntem.

state
Object

Zaman uyumsuz işlem hakkında bilgi içeren isteğe bağlı bir uygulamaya özgü nesne.

Döndürülenler

Zaman uyumsuz çağırma işlemine başvuru.

Ö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. Bunlar çağrılarak EndInvokealınır. çağrısı EndInvoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülü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))
                }
            }
        };
    }
}
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.");
}

Açıklamalar

İş akışı tamamlandığında bildirim almak ve iş akışının çıkış parametrelerini almak için yönteminden çağrısında EndInvoke bulunun callback . İş akışı tamamlanmadan önce çağrılırsa EndInvoke , iş akışı tamamlanana kadar engeller. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup çağrıldığında EndInvoke oluşturulurTimeoutException.

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, zaman uyumsuz tasarım desenini IAsyncResult kullanarak bir iş akışını zaman uyumsuz olarak çağırır. Daha fazla bilgi için bkz. Zaman Uyumsuz Programlamaya Genel Bakış.

Şunlara uygulanır