Parallel.Invoke Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
Ö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.