ConcurrentExclusiveSchedulerPair Costruttori

Definizione

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair.

Overload

ConcurrentExclusiveSchedulerPair()

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair.

ConcurrentExclusiveSchedulerPair(TaskScheduler)

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair destinata all'utilità di pianificazione specificata.

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair che si rivolge all'utilità di pianificazione specificata con un livello di concorrenza massimo.

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair che si rivolge all'utilità di pianificazione specificata con un livello di concorrenza massimo e un numero massimo di attività pianificate che possono essere elaborate come unità.

ConcurrentExclusiveSchedulerPair()

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair.

public ConcurrentExclusiveSchedulerPair ();

Esempio

Nell'esempio seguente viene illustrato l'uso del ConcurrentExclusiveSchedulerPair costruttore per creare un nuovo ConcurrentExclusiveSchedulerPair oggetto . Questo esempio di codice fa parte di un esempio più ampio fornito per l'articolo Procedura: Specificare un'utilità di pianificazione in un blocco di flussi di dati .

// 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);

Si applica a

.NET 7 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ConcurrentExclusiveSchedulerPair(TaskScheduler)

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair destinata all'utilità di pianificazione specificata.

public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler);

Parametri

taskScheduler
TaskScheduler

Utilità di pianificazione di destinazione in base alla quale eseguire questa coppia.

Si applica a

.NET 7 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32)

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair che si rivolge all'utilità di pianificazione specificata con un livello di concorrenza massimo.

public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler, int maxConcurrencyLevel);

Parametri

taskScheduler
TaskScheduler

Utilità di pianificazione di destinazione in base alla quale eseguire questa coppia.

maxConcurrencyLevel
Int32

Numero massimo di attività in esecuzione simultaneamente.

Si applica a

.NET 7 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ConcurrentExclusiveSchedulerPair(TaskScheduler, Int32, Int32)

Inizializza una nuova istanza della classe ConcurrentExclusiveSchedulerPair che si rivolge all'utilità di pianificazione specificata con un livello di concorrenza massimo e un numero massimo di attività pianificate che possono essere elaborate come unità.

public ConcurrentExclusiveSchedulerPair (System.Threading.Tasks.TaskScheduler taskScheduler, int maxConcurrencyLevel, int maxItemsPerTask);

Parametri

taskScheduler
TaskScheduler

Utilità di pianificazione di destinazione in base alla quale eseguire questa coppia.

maxConcurrencyLevel
Int32

Numero massimo di attività in esecuzione simultaneamente.

maxItemsPerTask
Int32

Il numero massimo di attività da elaborare per ogni attività pianificata sottostante utilizzata dalla coppia.

Si applica a

.NET 7 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0