Parallel.Invoke Yöntem

Tanım

Sağlanan eylemlerin her birini büyük olasılıkla paralel olarak yürütür.

Aşırı Yüklemeler

Invoke(Action[])

Sağlanan eylemlerin her birini büyük olasılıkla paralel olarak yürütür.

Invoke(ParallelOptions, Action[])

İşlem kullanıcı tarafından iptal edilmediği sürece sağlanan eylemlerin her birini büyük olasılıkla paralel olarak yürütür.

Invoke(Action[])

Sağlanan eylemlerin her birini büyük olasılıkla paralel olarak yürütür.

public:
 static void Invoke(... cli::array <Action ^> ^ actions);
public static void Invoke (params Action[] actions);
static member Invoke : Action[] -> unit
Public Shared Sub Invoke (ParamArray actions As Action())

Parametreler

actions
Action[]

Yürütülecek dizisi Action .

Özel durumlar

actions bağımsız değişkenidirnull.

Dizideki actions herhangi bir eylem bir özel durum oluştururken oluşan özel durum.

Dizi actions bir null öğe içerir.

Örnekler

Bu örnekte yönteminin Invoke diğer yöntemler, anonim temsilciler ve lambda ifadeleriyle nasıl kullanılacağı gösterilmektedir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

    class ParallelInvokeDemo
    {

        // Demonstrated features:
        // 		Parallel.Invoke()
        // Expected results:
        // 		The threads on which each task gets executed may be different.
        //		The thread assignments may be different in different executions.
        //		The tasks may get executed in any order.
        // Documentation:
        //		http://msdn.microsoft.com/library/dd783942(VS.100).aspx
        static void Main()
        {
            try
            {
                Parallel.Invoke(
                    BasicAction,	// Param #0 - static method
                    () =>			// Param #1 - lambda expression
                    {
                        Console.WriteLine("Method=beta, Thread={0}", Thread.CurrentThread.ManagedThreadId);
                    },
                    delegate()		// Param #2 - in-line delegate
                    {
                        Console.WriteLine("Method=gamma, Thread={0}", Thread.CurrentThread.ManagedThreadId);
                    }
                );
            }
            // No exception is expected in this example, but if one is still thrown from a task,
            // it will be wrapped in AggregateException and propagated to the main thread.
            catch (AggregateException e)
            {
                Console.WriteLine("An action has thrown an exception. THIS WAS UNEXPECTED.\n{0}", e.InnerException.ToString());
            }
        }

        static void BasicAction()
        {
            Console.WriteLine("Method=alpha, Thread={0}", Thread.CurrentThread.ManagedThreadId);
        }
    }
Imports System.Threading
Imports System.Threading.Tasks

Module InvokeDemo

    ' Demonstrated features:
    '   Parallel.Invoke()
    ' Expected results:
    '   The threads on which each task gets executed may be different.
    '   The thread assignments may be different in different executions.
    '   The tasks may get executed in any order.
    ' Documentation:
    '   http://msdn.microsoft.com/library/dd783942(VS.100).aspx
    Private Sub Main()
        Try
            ' Param #0 - static method
            Parallel.Invoke(AddressOf BasicAction,
                            Sub()
                                ' Param #1 - lambda expression
                                Console.WriteLine("Method=beta, Thread={0}", Thread.CurrentThread.ManagedThreadId)
                            End Sub,
                            Sub()
                                ' Param #2 - in-line delegate
                                Console.WriteLine("Method=gamma, Thread={0}", Thread.CurrentThread.ManagedThreadId)
                            End Sub)
        Catch e As AggregateException
            ' No exception is expected in this example, but if one is still thrown from a task,
            ' it will be wrapped in AggregateException and propagated to the main thread.
            Console.WriteLine("An action has thrown an exception. THIS WAS UNEXPECTED." & vbLf & "{0}", e.InnerException.ToString())
        End Try
    End Sub

    Private Sub BasicAction()
        Console.WriteLine("Method=alpha, Thread={0}", Thread.CurrentThread.ManagedThreadId)
    End Sub



End Module

Açıklamalar

Bu yöntem, paralel olabilecek bir dizi işlemi yürütmek için kullanılabilir.

İşlemlerin yürütülürken sırasıyla veya paralel olarak yürütülürken hiçbir garanti verilmez. Bu yöntem sağlanan işlemlerin her biri tamamlanana kadar geri dönmez; tamamlanmanın normal veya istisnai sonlandırmadan kaynaklanıp gerçekleşmediğine bakılmaksızın.

Daha fazla bilgi için bkz . Nasıl yapılır: Paralel İşlemleri Yürütmek için Parallel.Invoke Kullanma.

Şunlara uygulanır

Invoke(ParallelOptions, Action[])

İşlem kullanıcı tarafından iptal edilmediği sürece sağlanan eylemlerin her birini büyük olasılıkla paralel olarak yürütür.

public:
 static void Invoke(System::Threading::Tasks::ParallelOptions ^ parallelOptions, ... cli::array <Action ^> ^ actions);
public static void Invoke (System.Threading.Tasks.ParallelOptions parallelOptions, params Action[] actions);
static member Invoke : System.Threading.Tasks.ParallelOptions * Action[] -> unit
Public Shared Sub Invoke (parallelOptions As ParallelOptions, ParamArray actions As Action())

Parametreler

parallelOptions
ParallelOptions

Bu işlemin davranışını yapılandıran bir nesne.

actions
Action[]

Yürütülecek bir dizi eylem.

Özel durumlar

CancellationToken içindeki parallelOptions ayarlanır.

actions bağımsız değişkenidirnull.

-veya- parallelOptions bağımsız değişkenidirnull.

Dizideki actions herhangi bir eylem bir özel durum oluştururken oluşan özel durum.

Dizi actions bir null öğe içerir.

CancellationTokenSource içindeki parallelOptions ile CancellationToken ilişkilendirilmiş olan atılmıştır.

Açıklamalar

Bu yöntem, paralel olabilecek bir dizi işlemi yürütmek için kullanılabilir. yapısıyla geçirilen ParallelOptions iptal belirteci, çağıranın tüm işlemi iptal etmesine olanak tanır. Daha fazla bilgi için bkz. Yönetilen İş Parçacıklarında İptal.

İşlemlerin yürütülürken sırasıyla veya paralel olarak yürütülürken hiçbir garanti verilmez. Bu yöntem sağlanan işlemlerin her biri tamamlanana kadar geri dönmez; tamamlanmanın normal veya istisnai sonlandırmadan kaynaklanıp gerçekleşmediğine bakılmaksızın.

Daha fazla bilgi için bkz . Nasıl yapılır: Paralel İşlemleri Yürütmek için Parallel.Invoke Kullanma.

Şunlara uygulanır