共用方式為


ConcurrentExclusiveSchedulerPair 建構函式

定義

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體。

多載

ConcurrentExclusiveSchedulerPair()

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體。

ConcurrentExclusiveSchedulerPair(TaskScheduler)

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體,這個執行個體會以指定的排程器為目標。

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體,這個執行個體以具有最大並行層級的指定排程器為目標。

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體,這個執行個體以指定的排程器為目標,其具有最大並行層級與可當做一個單位來進行處理的排定工作最大數目。

ConcurrentExclusiveSchedulerPair()

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體。

public:
 ConcurrentExclusiveSchedulerPair();
public ConcurrentExclusiveSchedulerPair ();
Public Sub New ()

範例

下列範例示範如何使用 ConcurrentExclusiveSchedulerPair 建構函式來建立新的 ConcurrentExclusiveSchedulerPair 物件。 此程式碼範例是 如何:在資料流程區塊中指定工作排程器 一文中提供之較大範例的一部分。

// Create a ConcurrentExclusiveSchedulerPair object.
// Readers will run on the concurrent part of the scheduler pair.
// The writer will run on the exclusive part of the scheduler pair.
var taskSchedulerPair = new ConcurrentExclusiveSchedulerPair();

// Create an ActionBlock<int> object for each reader CheckBox object.
// Each ActionBlock<int> object represents an action that can read 
// from a resource in parallel to other readers.
// Specifying the concurrent part of the scheduler pair enables the 
// reader to run in parallel to other actions that are managed by 
// that scheduler.
var readerActions =
   from checkBox in new CheckBox[] { checkBox1, checkBox2, checkBox3 }
   select new ActionBlock<int>(milliseconds =>
   {
       // Toggle the check box to the checked state.
       toggleCheckBox.Post(checkBox);

       // Perform the read action. For demonstration, suspend the current
       // thread to simulate a lengthy read operation.
       Thread.Sleep(milliseconds);

       // Toggle the check box to the unchecked state.
       toggleCheckBox.Post(checkBox);
   },
   new ExecutionDataflowBlockOptions
   {
       TaskScheduler = taskSchedulerPair.ConcurrentScheduler
   });

// Create an ActionBlock<int> object for the writer CheckBox object.
// This ActionBlock<int> object represents an action that writes to 
// a resource, but cannot run in parallel to readers.
// Specifying the exclusive part of the scheduler pair enables the 
// writer to run in exclusively with respect to other actions that are 
// managed by the scheduler pair.
var writerAction = new ActionBlock<int>(milliseconds =>
{
    // Toggle the check box to the checked state.
    toggleCheckBox.Post(checkBox4);

    // Perform the write action. For demonstration, suspend the current
    // thread to simulate a lengthy write operation.
    Thread.Sleep(milliseconds);

    // Toggle the check box to the unchecked state.
    toggleCheckBox.Post(checkBox4);
},
new ExecutionDataflowBlockOptions
{
    TaskScheduler = taskSchedulerPair.ExclusiveScheduler
});

// Link the broadcaster to each reader and writer block.
// The BroadcastBlock<T> class propagates values that it 
// receives to all connected targets.
foreach (var readerAction in readerActions)
{
    broadcaster.LinkTo(readerAction);
}
broadcaster.LinkTo(writerAction);
' Create a ConcurrentExclusiveSchedulerPair object.
' Readers will run on the concurrent part of the scheduler pair.
' The writer will run on the exclusive part of the scheduler pair.
Dim taskSchedulerPair = New ConcurrentExclusiveSchedulerPair()

' Create an ActionBlock<int> object for each reader CheckBox object.
' Each ActionBlock<int> object represents an action that can read 
' from a resource in parallel to other readers.
' Specifying the concurrent part of the scheduler pair enables the 
' reader to run in parallel to other actions that are managed by 
' that scheduler.
Dim readerActions = From checkBox In New CheckBox() {checkBox1, checkBox2, checkBox3}
                    Select New ActionBlock(Of Integer)(Sub(milliseconds)
                                                           ' Toggle the check box to the checked state.
                                                           ' Perform the read action. For demonstration, suspend the current
                                                           ' thread to simulate a lengthy read operation.
                                                           ' Toggle the check box to the unchecked state.
                                                           toggleCheckBox.Post(checkBox)
                                                           Thread.Sleep(milliseconds)
                                                           toggleCheckBox.Post(checkBox)
                                                       End Sub, New ExecutionDataflowBlockOptions With {.TaskScheduler = taskSchedulerPair.ConcurrentScheduler})

' Create an ActionBlock<int> object for the writer CheckBox object.
' This ActionBlock<int> object represents an action that writes to 
' a resource, but cannot run in parallel to readers.
' Specifying the exclusive part of the scheduler pair enables the 
' writer to run in exclusively with respect to other actions that are 
' managed by the scheduler pair.
Dim writerAction = New ActionBlock(Of Integer)(Sub(milliseconds)
                                                   ' Toggle the check box to the checked state.
                                                   ' Perform the write action. For demonstration, suspend the current
                                                   ' thread to simulate a lengthy write operation.
                                                   ' Toggle the check box to the unchecked state.
                                                   toggleCheckBox.Post(checkBox4)
                                                   Thread.Sleep(milliseconds)
                                                   toggleCheckBox.Post(checkBox4)
                                               End Sub, New ExecutionDataflowBlockOptions With {.TaskScheduler = taskSchedulerPair.ExclusiveScheduler})

' Link the broadcaster to each reader and writer block.
' The BroadcastBlock<T> class propagates values that it 
' receives to all connected targets.
For Each readerAction In readerActions
    broadcaster.LinkTo(readerAction)
Next readerAction
broadcaster.LinkTo(writerAction)

適用於

ConcurrentExclusiveSchedulerPair(TaskScheduler)

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體,這個執行個體會以指定的排程器為目標。

public:
 ConcurrentExclusiveSchedulerPair(System::Threading::Tasks::TaskScheduler ^ taskScheduler);
public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler);
new System.Threading.Tasks.ConcurrentExclusiveSchedulerPair : System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.ConcurrentExclusiveSchedulerPair
Public Sub New (taskScheduler As TaskScheduler)

參數

taskScheduler
TaskScheduler

應該執行這一組的目標排程器。

適用於

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體,這個執行個體以具有最大並行層級的指定排程器為目標。

public:
 ConcurrentExclusiveSchedulerPair(System::Threading::Tasks::TaskScheduler ^ taskScheduler, int maxConcurrencyLevel);
public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler, int maxConcurrencyLevel);
new System.Threading.Tasks.ConcurrentExclusiveSchedulerPair : System.Threading.Tasks.TaskScheduler * int -> System.Threading.Tasks.ConcurrentExclusiveSchedulerPair
Public Sub New (taskScheduler As TaskScheduler, maxConcurrencyLevel As Integer)

參數

taskScheduler
TaskScheduler

應該執行這一組的目標排程器。

maxConcurrencyLevel
Int32

要同時執行的工作的最大數目。

適用於

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

初始化 ConcurrentExclusiveSchedulerPair 類別的新執行個體,這個執行個體以指定的排程器為目標,其具有最大並行層級與可當做一個單位來進行處理的排定工作最大數目。

public:
 ConcurrentExclusiveSchedulerPair(System::Threading::Tasks::TaskScheduler ^ taskScheduler, int maxConcurrencyLevel, int maxItemsPerTask);
public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler, int maxConcurrencyLevel, int maxItemsPerTask);
new System.Threading.Tasks.ConcurrentExclusiveSchedulerPair : System.Threading.Tasks.TaskScheduler * int * int -> System.Threading.Tasks.ConcurrentExclusiveSchedulerPair
Public Sub New (taskScheduler As TaskScheduler, maxConcurrencyLevel As Integer, maxItemsPerTask As Integer)

參數

taskScheduler
TaskScheduler

應該執行這一組的目標排程器。

maxConcurrencyLevel
Int32

要同時執行的工作的最大數目。

maxItemsPerTask
Int32

要針對此配對所使用的每個基礎排定工作進行處理的工作的最大數目。

適用於